Child MouseDown时防止父母发生事件

时间:2014-03-28 06:45:50

标签: c# wpf xaml

我在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触发?

XAML:

<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>

3 个答案:

答案 0 :(得分:1)

您的代码运行正常,但如果不够,您可以尝试使用此代码:

IsHitTestVisible="True"

答案 1 :(得分:0)

Image元素没有Background属性,而是直接在image元素处设置Source属性。

<Image x:Name="leapTcb" Source="Resources/leap_1.png" MouseLeftButtonDown="leapTcb_MouseLeftButtonDown"/>

但是你运行了这个,但是在指定的更改下,它的行为与你想要的一样,至少在我的机器上。

答案 2 :(得分:0)

使用此功能正在我身边

<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>