MouseDown 事件处理程序似乎阻止调用 Click 事件处理程序
MouseDown event handler seem to block Click event handler from being invoked
我正在开设有关 WPF 事件处理的在线课程。在有关隧道和冒泡事件的部分中,我被告知使用以下代码示例来跟踪触发事件的顺序(使用断点):
查看:
<Grid PreviewMouseDown="Grid_PreviewMouseDown">
<Button Name="btnFirst" Width="200" Height="200" Click="Button_Click">
<Image MouseDown="Image_MouseDown" Source="Assets/pic.jpg"></Image>
</Button>
</Grid>
代码隐藏:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Grid_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{ // Breakpoint goes here
}
private void Image_MouseDown(object sender, MouseButtonEventArgs e)
{ // Breakpoint goes here
}
private void Button_Click(object sender, RoutedEventArgs e)
{ // Breakpoint goes here
}
}
结果:
在课程中,点击图片会触发所有三个事件处理程序,但是当我尝试时,只有Grid_PreviewMouseDown和Image_MouseDown 被调用,Button_Click 似乎被完全忽略了。这是预期的行为还是我在这里遗漏了什么?该课程是从 2014 年开始的。
我注意到的一件事是 Button_Click 仅当我从 Grid 标记中删除 PreviewMouseDown 属性时才会被调用然后我点击按钮本身(而不是里面的图片)。
由于我们 运行 没有其他选择,我建议您重新安装最新版本的 Visual Studio 以及与 .NET Framework 和 WPF 开发相关的所有工作负载包 - 可能有一些在某些时候腐败。
我正在开设有关 WPF 事件处理的在线课程。在有关隧道和冒泡事件的部分中,我被告知使用以下代码示例来跟踪触发事件的顺序(使用断点):
查看:
<Grid PreviewMouseDown="Grid_PreviewMouseDown">
<Button Name="btnFirst" Width="200" Height="200" Click="Button_Click">
<Image MouseDown="Image_MouseDown" Source="Assets/pic.jpg"></Image>
</Button>
</Grid>
代码隐藏:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Grid_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{ // Breakpoint goes here
}
private void Image_MouseDown(object sender, MouseButtonEventArgs e)
{ // Breakpoint goes here
}
private void Button_Click(object sender, RoutedEventArgs e)
{ // Breakpoint goes here
}
}
结果:
在课程中,点击图片会触发所有三个事件处理程序,但是当我尝试时,只有Grid_PreviewMouseDown和Image_MouseDown 被调用,Button_Click 似乎被完全忽略了。这是预期的行为还是我在这里遗漏了什么?该课程是从 2014 年开始的。
我注意到的一件事是 Button_Click 仅当我从 Grid 标记中删除 PreviewMouseDown 属性时才会被调用然后我点击按钮本身(而不是里面的图片)。
由于我们 运行 没有其他选择,我建议您重新安装最新版本的 Visual Studio 以及与 .NET Framework 和 WPF 开发相关的所有工作负载包 - 可能有一些在某些时候腐败。