问候
我昨天开始用WPF开发,遇到了一些问题。我认识到画布等同于WinForms中的面板。然而,我在使用'click‘事件时遇到了一些困难。MouseLeftButtonDown事件。无论是否相关,此图像和画布都在UserControl中

上面的图像基本上就是我遇到困难的地方。您看到的3个图像是一个图像。您看到的每个方块都是不同的画布。根据所单击的画布,我希望发生一些不同的事情。
目前我有以下代码:
<Grid>
<Canvas Name="canvasTerran" Height="27" Width="26" Margin="88,106,134,106" MouseLeftButtonDown="canvasTerran_MouseLeftButtonDown" />
<Canvas Name="canvasZerg" Height="27" Width="26" Margin="117,107,105,107" MouseLeftButtonDown="canvasZerg_MouseLeftButtonDown" />
<Canvas Name="canvasProtoss" Height="27" Margin="145,107,88,107" MouseLeftButtonDown="canvasProtoss_MouseLeftButtonDown" />
<Image Name="imageRaces" Height="27" Width="73" Stretch="Fill" Source="pack://application:,,,/Images/Races/Races.png" />
</Grid>当我运行应用程序(当然,用户控件在主窗口中)并单击画布所在的位置时,什么也没有发生。我尝试触发的事件:
private void canvasTerran_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("lolterran", "lol");
// image on main window
// .Source = new BitmapImage(new Uri("pack://application:,,,/" + Constants.RACESPATH + "T.png"));
}我真的看不出我在这里做错了什么,所以欢迎任何建议。正如我所说的,我是WPF的新手,所以如果你认为有比我目前正在尝试的更好的方法,请说出来!
提前谢谢。
发布于 2010-12-04 23:27:44
实际问题是画布是透明的。因此,所有事件都不会在canvas处停止,而是为其父元素生成。
例如,如果您为画布设置了Background=White或Red,则它应该为MouseLeftButtonDown。
发布于 2010-12-04 23:21:14
您的图像隐藏了画布,因此在XAML中,在声明图像之后声明画布,因此在UI中,画布将在其前面,单击将生效。
提示:给画布背景颜色只是为了看看它们如何在UI中呈现自己。当你这样做的时候,你可以看到图像隐藏了它们。
https://stackoverflow.com/questions/4354134
复制相似问题