嗨,我有以下代碼,我正在用按鈕模板在畫布上繪製一個按鈕,當我單擊按鈕時我希望顯示一條消息,但它不,甚至當我在按鈕上註冊鼠標按下事件時,它仍然無法識別。按鈕單擊無法在畫布上識別
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