WPF列表和上下文菜单

时间:2011-08-12 06:34:48

标签: c# wpf silverlight listbox contextmenu

哪个WPF控件允许在每个项目上列出项目和上下文菜单?到目前为止,我一直在使用ListBox,但似乎没有简单的方法向其项目添加上下文菜单。相反,我正在考虑将ListBox更改为另一个允许上下文菜单的控件。

我现在使用的唯一ListBox属性/方法是“SelectedIndex”和“SelectedItem”。只要建议的控制支持这个或有另一个替代,我应该没事。

3 个答案:

答案 0 :(得分:4)

要向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 :(得分:1)

您可以使用wpf中的DataGrid控件进行列表。您也可以像

一样添加contextMenu
<DataGrid AutoGenerateColumns="False" Height="200"  Width="200" >
        <DataGrid.ContextMenu>
        <ContextMenu >
            <MenuItem Header="Menu Header" Click="MenuItem_Click"  />
        </ContextMenu>
        </DataGrid.ContextMenu>
</DataGrid>

另请参阅Create contextmenus for datagrid rows

答案 2 :(得分:0)

此示例不使用您通常在真实应用中看到的任何绑定或DataTemplates,但希望它有所帮助

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