2010-12-04 65 views
3

問候WPF - Canvas_MouseLeftButtonDown事件

我從昨天開始用WPF開發並遇到了一些問題。我認識到Canvas等同於WinForms中的面板。但是,我遇到了一些'點擊'事件的困難。 MouseLeftButtonDown事件。如果是相關與否,這個形象與畫布是在用戶控件

Image + 3 Canvasses

上面的影像基本上就是我有困難。你看到的3幅圖像是一幅圖像。你看到的廣場是不同的畫布。根據點擊的畫布,我希望發生不同的事情。

目前,我有以下代碼:

<Grid> 
    <Canvas Name="canvasTerran" Height="27" Width="26" Margin="88,106,134,106" MouseLeftButtonDown="canvasTerran_MouseLeftButtonDown" /> 
    <Canvas Name="canvasZerg" Height="27" Width="26" Margin="117,107,105,107" MouseLeftButtonDown="canvasZerg_MouseLeftButtonDown" /> 
    <Canvas Name="canvasProtoss" Height="27" Margin="145,107,88,107" MouseLeftButtonDown="canvasProtoss_MouseLeftButtonDown" /> 
    <Image Name="imageRaces" Height="27" Width="73" Stretch="Fill" Source="pack://application:,,,/Images/Races/Races.png" /> 
</Grid> 

當我運行應用程序(用戶控件是在主窗口中ofcourse)和我點擊在畫布應該是什麼也沒有發生。我試圖觸發的事件:

private void canvasTerran_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      MessageBox.Show("lolterran", "lol"); 

      // image on main window 
      // .Source = new BitmapImage(new Uri("pack://application:,,,/" + Constants.RACESPATH + "T.png")); 
     } 

我真的不明白我在做什麼錯誤,所以任何建議都會受到歡迎。正如我所說我是WPF的新手,所以如果你認爲有比我現在嘗試更好的方式,請說出口!

在此先感謝。

回答

4

的實際問題是,畫布是透明的。因此,所有事件都不會在畫布上停止,但是它們是爲其父元素生成的。

如果設置背景=白色或紅色例如用於畫布,它應該得到的MouseLeftButtonDown。

3

你的圖片隱藏畫布所以在XAML聲明後的圖像,所以在UI他們將在它的前面和的點擊生效申報畫布。

提示:給畫布背景顏色只是爲了看看他們是如何使自己的UI。當你這樣做時,你可以看到圖像隱藏它們。

+0

對我來說它的工作 – Erez 2010-12-04 15:25:07

+1

你是正確的,它的工作。我所要做的只是將透視圖放在Canvas上,否則單擊它們將不起作用,因爲它們沒有填充顏色。該提示幫助我很多謝謝你! – Citroenfris 2010-12-04 15:29:26