2010-08-20 99 views
1

我知道WPF中的事件冒泡了可視化樹,所以我不明白爲什麼這個捕獲上下文menuitem事件的簡單示例在它的父列表框中單擊事件不起作用:WPF Xaml中的事件冒泡點擊事件

<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> 

我希望當任何的MenuItems的被點擊調試器會打我的事件處理程序MenuItem_Click但它從來不會。任何人都可以請解釋我做錯了什麼?

回答

4

ContextMenus(和它們的項目)在技術上並不是視覺樹的一部分。他們不屬於他們所屬物品的「子女」。所以他們的事件不會冒泡給他們的主人。

一些更多的信息可以在這裏找到:RoutedCommands in a ContextMenu

+0

呃。仔細檢查一下,我所鏈接的文章沒有多大幫助。它有*一些*額外的信息,所以我會留在答案。 – 2010-08-20 04:25:29

+0

好吧,我現在明白了,但是有沒有其他方法可以完成同樣的事情?我不想在所有MenuItems上寫出事件調用(將會有很多) – 2010-08-20 11:34:56