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

时间:2010-08-20 04:14:44

标签: wpf events xaml event-handling

我知道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,但它永远不会。谁能解释一下我做错了什么?

1 个答案:

答案 0 :(得分:4)

ContextMenus(及其项目)在技术上不是可视树的一部分。他们不是他们所属物品的“孩子”。所以他们的活动并没有冒充他们的主人。

可以在此处找到更多信息:RoutedCommands in a ContextMenu