嗨,我有以下代码,我正在用按钮模板在画布上绘制一个按钮,当我单击按钮时我希望显示一条消息,但它不,甚至当我在按钮上注册鼠标按下事件时,它仍然无法识别。按钮单击无法在画布上识别
private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Button r = e.Source as Button;
if (r != null)
MessageBox.Show(r.ToString());
Point mousePoint = Mouse.GetPosition(mainCanvas);
Button button1 = new Button();
button1.Template = (ControlTemplate)this.FindResource("nodeTemplate");
Canvas.SetTop(button1, mousePoint.Y);
Canvas.SetLeft(button1, mousePoint.X);
mainCanvas.Children.Add(button1);
}
}
<Window.Resources>
<ControlTemplate x:Key="nodeTemplate" TargetType="Button">
<Grid>
<Ellipse x:Name="outerCircle" Fill="Red" Height="50" Width="50"/>
<Ellipse x:Name="innerCircle" Fill="Green" RenderTransformOrigin=".5,.5">
<Ellipse.RenderTransform>
<ScaleTransform ScaleX=".9" ScaleY=".9"/>
</Ellipse.RenderTransform>
</Ellipse>
</Grid>
</ControlTemplate>
</Window.Resources>
<DockPanel>
<Canvas x:Name="mainCanvas" Background="Transparent" MouseLeftButtonDown="Canvas_MouseLeftButtonDown">
</Canvas>
</DockPanel>
@Meleak:我想我错误地删除了Meleak的回答,你能转发吗? – mihajlv
呵呵不,这是我删除它。我认为这是共同的背景是空的问题,但更仔细地看你的代码后,我注意到你已经有'背景=“透明”'所以答案没用:) –
@Meleak:背景是透明的画布虽然,按钮有一个填充和没有背景属性,你知道背景和填充之间的区别是什么。 但Ellipse没有Background属性。 – mihajlv