Контекстное меню не вызывается должным образом - PullRequest
0 голосов
/ 16 марта 2012

У меня проблема с назначением обработчику события контекстного меню, которое связано как ItemContainerStyle для списка.Когда вы щелкаете правой кнопкой мыши и вызываете элемент списка в приложении, я получаю контекстное меню, которое показывает имя заголовка, а также другой вложенный элемент с именем system.window.style.

Мой код XAML выглядит следующим образом:

            <ListBox HorizontalAlignment="Left" Margin="6,90,0,0" Name="listbox1" Width="189" FontSize="14" Height="416" VerticalAlignment="Top">
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="ContextMenu">
                        <Setter.Value>
                            <ContextMenu>
                                <MenuItem Header="Delayed Kick" >
                                    <Style TargetType="MenuItem">
                                        <EventSetter Event="Click" Handler="DelayedKick_Click"/>
                                    </Style>
                                </MenuItem>
                            </ContextMenu>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListBox.ItemContainerStyle>
        </ListBox>

1 Ответ

1 голос
/ 16 марта 2012

Все, вложенное в MenuItem, интерпретируется как содержимое этого элемента, которое может быть дочерним MenuItems, поэтому отображается как элемент меню.

Следующий пример будет работать так, как вы ожидаете. Поместите стиль MenuItem в элемент ресурсов там, где это подходит.

<Grid.Resources>
    <Style TargetType="MenuItem">
        <EventSetter Event="Click" Handler="DelayedKick_Click"/>
    </Style>
</Grid.Resources>

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="ContextMenu">
            <Setter.Value>
                <ContextMenu>
                    <MenuItem Header="Delayed Kick" />
                </ContextMenu>
            </Setter.Value>
        </Setter>
    </Style>
</ListBox.ItemContainerStyle>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...