2014-03-28 41 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>