WPF:画布和形状鼠标事件不起作用
本文关键字:鼠标 事件 不起作用 WPF | 更新日期: 2023-09-27 18:26:12
我有一个画布对象,代码中生成了许多省略号。我为MouseDown设置了事件处理程序。然而,它不起作用。我对此深究了很多,最后出现了一个非常简单的情况:我有一个以网格为根的窗口,里面有一个画布:
XML:
<Window x:Class="SQLparserTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="900" Width="1280" >
<Grid>
<Canvas x:Name="canvas" MouseDown="canvasMouseDown" Background="Red">
</Canvas>
<TextBlock x:Name="tooltip" Margin="10">0</TextBlock>
<Button x:Name="b" Width="10" Height="10" HorizontalAlignment="Left" VerticalAlignment="Top" Click="buttonClick"/>
</Grid>
</Window>
并在代码中生成处理程序:
private void canvasMouseDown(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("MouseDown");
}
我能找到的大多数解决方案都是关于设置背景色而不是null。但我的代码不起作用(事件从不触发)。
有人能告诉我为什么它不起作用吗?
谢谢。
因为TextBlock已经在画布上结束了
若不设置TextBlock的大小,它将被拉伸。
也许如果你点击了最边缘,那么消息框就会调用
您可以通过设置文本块的背景来确认文本块的大小。
或者,您应该将名为IsHitTestVisible的属性设置为False
像
<TextBlock x:Name="tooltip" Margin="10" IsHitTestVisible="False">0</TextBlock>