防止父级在子级鼠标down时触发事件
本文关键字:事件 down 鼠标 | 更新日期: 2023-09-27 17:54:34
我有一个Grid
放在Window
的顶部,在它里面有一个Image
。假定Grid
正在拖动具有MouseDown
事件的窗口。
然而,每当我想要触发MouseDown
事件到Child Image
时,它不工作,而是触发Grid's
。
private void toggleTbr_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
}
private void leapTcb_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
//my code
}
正如你所看到的,我尝试了e.Handled = true;
,但它没有改变什么,然后我想尝试使用PreviewMouseLeftButtonDown
而不是MouseLeftButtonDown
,但是,仍然是一样的。
我在这里做错了什么,或者如何防止Grid
触发?
<Grid x:Name="toggleTbr" MouseLeftButtonDown="toggleTbr_MouseLeftButtonDown">
<Grid x:Name="leapTcb_" Height="21" Width="26">
<Image x:Name="leapTcb" MouseLeftButtonDown="leapTcb_MouseLeftButtonDown">
<Image.Background>
<ImageBrush Source="Resources/leap_1.png"/>
</Image.Background>
</Image>
</Grid>
</Grid>
你的代码工作得很好,但如果它还不够,你可以尝试使用这个:
IsHitTestVisible="True"
Image元素没有Background属性,可以直接在Image元素上设置Source属性。
<Image x:Name="leapTcb" Source="Resources/leap_1.png" MouseLeftButtonDown="leapTcb_MouseLeftButtonDown"/>
使用这个,这是我的工作
<Grid x:Name="toggleTbr" MouseLeftButtonDown="toggleTbr_MouseLeftButtonDown" Background="Red">
<Grid x:Name="leapTcb_" Height="21" Width="26">
<Image x:Name="leapTcb" PreviewMouseLeftButtonDown="leapTcb_MouseLeftButtonDown">
<Image.Background>
<ImageBrush Source="Resources/leap_1.png"/>
</Image.Background>
</Image>
</Grid>
</Grid>