我知道WPF中的事件冒泡了可视化树,所以我不明白为什么这个简单的例子在它的父列表框上捕获上下文menuitem点击事件的事件不起作用:
<ListBox Width="200" MenuItem.Click="MenuItem_Click">
<ListBoxItem>
<TextBlock Text="Hello">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="World 1"></MenuItem>
<MenuItem Header="World 2"></MenuItem>
<MenuItem Header="World 3"></MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</ListBoxItem>
</ListBox>
我希望当单击任何MenuItem时,调试器将命中我的事件处理程序MenuItem_Click,但它永远不会。谁能解释一下我做错了什么?
答案 0 :(得分:4)
ContextMenus(及其项目)在技术上不是可视树的一部分。他们不是他们所属物品的“孩子”。所以他们的活动并没有冒充他们的主人。
可以在此处找到更多信息:RoutedCommands in a ContextMenu。