是否有当一个孩子菜单项按下通知父菜单项的方式。 例如,我有你
<MenuItem Name='a'>
<MenuItem Name='b' Header='...'/>
</MenuItem>
我怎么能一个事件处理程序添加到被点击b当被通知。 理想情况下,点击事件,无论是隧道或泡沫事件,但事实并非如此。 考虑到该解决方案我是听B上的Click事件,并将其转发到但这似乎挺重的手。 有没有更好的解决办法?
是否有当一个孩子菜单项按下通知父菜单项的方式。 例如,我有你
<MenuItem Name='a'>
<MenuItem Name='b' Header='...'/>
</MenuItem>
我怎么能一个事件处理程序添加到被点击b当被通知。 理想情况下,点击事件,无论是隧道或泡沫事件,但事实并非如此。 考虑到该解决方案我是听B上的Click事件,并将其转发到但这似乎挺重的手。 有没有更好的解决办法?
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
。 这点到最初触发事件的控制。