WPF списки и контекстные меню - PullRequest
1 голос
/ 12 августа 2011

Какой элемент управления WPF позволяет перечислять элементы и контекстные меню для каждого из элементов? До сих пор я использовал ListBox, но кажется, что нет простого способа добавить контекстные меню к его элементам. Вместо этого я смотрю на изменение ListBox на другой элемент управления, который разрешает контекстные меню.

Единственные свойства / методы ListBox, которые я сейчас использую, это "SelectedIndex" и "SelectedItem". Пока предлагаемый элемент управления поддерживает это или имеет другую замену, у меня все будет в порядке.

Ответы [ 3 ]

4 голосов
/ 12 августа 2011

Чтобы добавить ContextMenu к ListBoxItem, вы используете ItemContainerStyle

<ListBox ItemsSource="{Binding ...}">
    <ListBox.Resources>
        <ContextMenu x:Key="listBoxItemContextMenu">
            <MenuItem Header="{Binding YourProperty}" />
        </ContextMenu>
    </ListBox.Resources>
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="ContextMenu"
                    Value="{StaticResource listBoxItemContextMenu}"/>
        </Style>
    </ListBox.ItemContainerStyle>
    <!--...-->
</ListBox>
1 голос
/ 12 августа 2011

Вы можете использовать элемент управления DataGrid в wpf для распечатки. Также вы можете добавить contextMenu как

<DataGrid AutoGenerateColumns="False" Height="200"  Width="200" >
        <DataGrid.ContextMenu>
        <ContextMenu >
            <MenuItem Header="Menu Header" Click="MenuItem_Click"  />
        </ContextMenu>
        </DataGrid.ContextMenu>
</DataGrid>

Также см. Создание контекстных меню для строк сетки данных

0 голосов
/ 12 августа 2011

В этом примере не используются никакие привязки или шаблоны данных, которые вы обычно видите в реальном приложении, но, надеюсь, это поможет

    <ListBox>
        <ListBox.Items>
            <ListBoxItem Content="Item A">
                <ListBoxItem.ContextMenu>
                    <ContextMenu>Delete A</ContextMenu>
                </ListBoxItem.ContextMenu>
            </ListBoxItem>
            <ListBoxItem Content="Item B">
                <ListBoxItem.ContextMenu>
                    <ContextMenu>Delete B</ContextMenu>
                </ListBoxItem.ContextMenu>
            </ListBoxItem>
            <ListBoxItem Content="Item C">
                <ListBoxItem.ContextMenu>
                    <ContextMenu>Delete A</ContextMenu>
                </ListBoxItem.ContextMenu>
            </ListBoxItem>
        </ListBox.Items>
    </ListBox>
...