C #: списочное контекстное меню для списочных элементов (WPF) - PullRequest
6 голосов
/ 11 декабря 2010

Я хочу для моего списка в WPF контекстное меню. Я сделал это с помощью контекстного меню для всего списка, но вы можете щелкнуть по нему, чтобы получить контекстное меню, даже если вы не нажали на элемент.

Я нашел что-то в Google, но это не сработало.

Я пробовал что-то вроде этого:

<ListBox Margin="5" ItemsSource="{Binding}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}">
                <TextBlock.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="{Binding Name}" Click="MenuItemName_Click"/>
                        <MenuItem Header="{Binding Capital}"  Click="MenuItemCapital_Click"/>
                        <MenuItem Header="{Binding Population}" Click="MenuItemPopulation_Click"/>
                    </ContextMenu>
                </TextBlock.ContextMenu>
            </TextBlock>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Я пробовал это с помощью текстового блока, как в примере, с другими элементами, как в других уроках, я устал от этого и многих других вещей, но ничего не работало. Нет контекстного меню для моих элементов списка: (

позже я попробовал что-то вроде этого:

 <ListBox.ItemTemplate>
     <DataTemplate>
         <ListBoxItem>
             <ListBoxItem.ContextMenu>
                 <ContextMenu>
                     <MenuItem/>
                 </ContextMenu>
             </ListBoxItem.ContextMenu>
         </ListBoxItem>
     </DataTemplate>
 </ListBox.ItemTemplate>

Но это тоже не сработало.

Может кто-нибудь дать мне подсказку / рабочий пример:)?

спасибо

1 Ответ

13 голосов
/ 12 декабря 2010

Я бы установил ContextMenu в стиле ListBoxItem, а не в DataTemplate:

<ListBox Name="simpleListBox"
         ItemsSource="{Binding SimpleList}"
         DisplayMemberPath="Name">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu>
                        ...
                    </ContextMenu>
                </Setter.Value>
            </Setter>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...