2014-03-28 39 views
0

我有一个Grid放置在Window的顶部,其中放置了一个Image。据推测,Grid将通过MouseDown事件拖动窗口。当孩子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> 
+0

哪个事件是由儿童形象长大的吗? – Sankarann

+0

@Sankarann'LeapTcb_MouseLeftButtonDown' – Explisam

+1

分享你的xaml代码 – Betty

回答

1

你的代码工作正常,但如果它是不够的,你可以尝试使用这样的:

IsHitTestVisible="True" 
0

的图片元素没有背景属性,相反,Source属性直接在图像元素设置。

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

不过是你们成就了运行,但与指定改变它的行为像你想,至少我的机器上。

+0

是的,我实际上也做了这个改变,以获得更好的性能。 – Explisam

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>