2009-07-08 10 views
1

子MenuItemが押されたときに親MenuItemが通知される方法はありますか? は例えば、私は私はBがクリックされたときに通知されるようにするイベントハンドラを追加する方法子を聴くMenuItem Click

<MenuItem Name='a'> 
    <MenuItem Name='b' Header='...'/> 
</MenuItem> 

を持っています。 理想的には、Clickイベントはトンネルイベントまたはバブルイベントのいずれかですが、そうではありません。 私が念頭に置いている解決策は、bのClickイベントを聞いてそれをaに転送することですが、これはかなり重い手のようです。 もっと良い解決策はありますか?

答えて

3

MenuItem.Clickはルーティングされたイベントです(泡立つ)ので、初めてMenuItemに登録して、すべての子どもに同時に通知することができます。

XAML:

<MenuItem Name='a' Click='OnMenuItemClicked'> 
    <MenuItem Name='b' Header='...' /> 
</MenuItem> 

C番号:

private void OnMenuItemClicked(object sender, RoutedEventArgs e) 
{ 
    MenuItem item = e.OriginalSource as MenuItem; 
    if(null != item) 
    { 
     // Handle the menu item click here 
    } 
} 

トリックRoutedEventArgs.OriginalSourceはなく、senderを使用することです。これは、最初にイベントを発生させたコントロールを指します。

+0

あなたは正しいです。これはバブルイベントです。 – tom7

関連する問題