WPF - Canvas_MouseLeftButtonDown 事件

5 c# wpf canvas

问候

我昨天开始使用 WPF 进行开发,遇到了一些问题。我开始理解 Canvas 相当于 WinForms 中的 Panel。然而,我在“点击”事件方面遇到了一些困难。MouseLeftButtonDown 事件。如果相关或不相关,该图像和画布位于用户控件中

图片 + 3 幅画布

上图基本上就是我遇到的困难。您看到的 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>
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时(当然,用户控件位于主窗口中)并且我单击画布的位置应该不会发生任何事情。我试图触发的事件:

 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"));
        }
Run Code Online (Sandbox Code Playgroud)

我真的不明白我在这里做错了什么,所以欢迎任何建议。正如我所说,我是 WPF 的新手,所以如果您认为有比我目前正在尝试的更好的方法,请务必说出来!

提前致谢。

And*_*ana 5

实际问题是画布是透明的。因此,所有事件都不会在画布上停止,而是为其父元素生成。

例如,如果您为画布设置Background = White或Red,则它应该获得MouseLeftButtonDown。

  • 是的,确实如此,但背景=“透明”也能做到这一点!而不是仅仅保留标准。感谢您的答复! (2认同)