Событие Bubbling click event в WPF Xaml - PullRequest
1 голос
/ 20 августа 2010

Я знаю, что события в WPF всплывают в визуальном дереве, поэтому я не понимаю, почему этот простой пример перехвата события события click контекстного меню в его родительском списке не работает:

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

Я ожидаю, что при щелчке по любому из элементов MenuIt отладчик попадет в мой обработчик события MenuItem_Click, но этого не произойдет.Может кто-нибудь объяснить, что я делаю не так?

1 Ответ

4 голосов
/ 20 августа 2010

ContextMenus (и их элементы) технически не являются частью визуального дерева.Они не "дети" предмета, которому они принадлежат.Поэтому их события не доходят до их владельцев.

Дополнительную информацию можно найти здесь: RoutedCommands в ContextMenu .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...