2013-05-25 91 views
0

我在我的WPF項目畫布控制:鼠標按下事件不會冒泡在畫布控制

<Canvas x:Name="mainCanvas" Margin="0" 
     MouseMove="mainCanvas_MouseMove"  
     MouseLeftButtonDown="mainCanvas_MouseLeftButtonDown"/> 

在這種帆布的控制,還有一些其他的帆布作爲孩子控制。

問題是,當我點擊這些子畫布控件時,mainCanvas_MouseLeftButtonDown回調不會被調用。我不會將這些兒童畫布的鼠標事件綁定到任何地方。

mainCanvas_MouseMove回調似乎工作正常,但即使將鼠標懸停在子畫布上時也會調用它。

我試了一下沒有運氣的預覽鼠標事件。

我該如何解決這個問題?

+0

張貼您的孩子的畫布Xaml – makc

+0

它是動態創建的。這裏是:http://pastebin.com/aeUgDans –

回答

0

事件不會冒泡,因爲可視樹上的某個人已經處理了它們。

你應該使用snoop,看看誰處理的事件

否則只登記了孩子,當你摧毀你的孩子畫布不要忘記註銷事件畫布的事件處理器

public override Canvas CreateCanvas() 
{ 
    Canvas canvas = new Canvas(); 

    canvas.MouseMove +=new MouseEventHandler(mainCanvas_MouseMove); 
    canvas .MouseLeftButtonDown +=new MouseButtonEventHandler(mainCanvas_MouseLeftButtonDown); 

// your code here 
} 

+0

我試圖通過Snoop檢查它。看起來沒有人正在處理這個事件,也沒有到達主畫布。它在子畫布控制之後停止傳播,我不知道爲什麼。 –

+0

@CanolGökel你嘗試註冊事件嗎? – makc