听孩子点击菜单项(Listen to child MenuItem Click)

2019-06-25 10:19发布

是否有当一个孩子菜单项按下通知父菜单项的方式。 例如,我有你

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

我怎么能一个事件处理程序添加到被点击b当被通知。 理想情况下,点击事件,无论是隧道或泡沫事件,但事实并非如此。 考虑到该解决方案我是听B上的Click事件,并将其转发到但这似乎挺重的手。 有没有更好的解决办法?

Answer 1:

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 。 这点到最初触发事件的控制。



文章来源: Listen to child MenuItem Click