2009-04-16 75 views
0

一個衆所周知的事實是,路由事件僅在祖先中上下傳播,而不是通過所有元素傳播。wpf中的路由事件

但同樣已知的事實是,事件處理程序可以在兩個不同控件的共同父項中進行連線。

我的問題是如何,請指點。

我有XAML看起來像

<Grid Name="MainGrid"> 
    <Listbox Name="lb1"/> 
    <Grid Name="InnerGrid"> 
     <Listbox Name="lb2"/> 
    </Grid> 
</Grid> 

,因爲它被「埋」下的「InnerGrid」的「LB1」中定義的鼠標事件處理程序將不會被解僱。我的問題是如何在「MainGrid」或其他地方編寫一些代碼,其中在「lb1」上定義的事件處理程序被解僱。或者可能是其他技術來實現這一點。

很多謝謝。

+0

這可能是一個愚蠢的問題,但爲什麼你首先在InnerGrid下「埋葬」你的lb1? ;) – 2009-04-17 07:36:18

+0

你的問題絕對有道理。我上面提到的問題就像是縮短長篇故事。基本上在1024X768的屏幕房地產不太適應,並且有很多這種形式的控制。 :) – 2009-04-17 08:59:16

回答

1

我不確定你在問什麼,但你似乎希望能夠獲得已經處理的事件的調用。在InitializeComponent()後的構造背後

在你的代碼,調用事件

this.AddHandler(RoutedEvent, Delegate, bool); 

通(MouseDown或等),委託調用(類似lb1_MouseDown),以及:

試試這個然後true表示您希望爲已處理的事件調用。