WPF Xaml 中的事件冒泡点击事件

1 wpf events xaml event-handling

我知道 WPF 中的事件会在可视化树中冒泡,所以我不明白为什么这个在其父列表框上捕获上下文菜单项单击事件的简单示例不起作用:

<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>
Run Code Online (Sandbox Code Playgroud)

我希望当单击任何 MenuItem 时,调试器将命中我的事件处理程序 MenuItem_Click,但它永远不会。谁能解释一下我做错了什么?

Mat*_*ton 5

ContextMenus(及其项目)在技术上不是可视化树的一部分。它们不是它们所属项目的“子项”。所以他们的事件不会冒泡给他们的主人。

可以在此处找到更多信息:ContextMenu 中的 RoutedCommands