我想在WPF上为我的datagrid标题添加不同的上下文菜单。我怎么能这样做?
答案 0 :(得分:3)
这些资源将帮助您:
WPF使用的是另一种标记语言XAML,您通常会看到一个常见的事情是标签会在很多控件上重复使用。在上面的示例中,您可以看到像
这样的控件 Control.ContextMenu
是否可以为您创建该项目的特定菜单。摘自上面的第一个链接,请参阅RichTextBox
<RichTextBox>
<RichTextBox.ContextMenu>
<ContextMenu>
</ContextMenu>
</RichTextBox.ContextMenu>
</RichTextBox>
这不仅适用于ContextMenu
!还有其他可重复使用的元素。根据您使用的DataGrid,您必须查看API,但它最有可能像这样工作。
答案 1 :(得分:0)
您可以分别使用DataGrid.ColumnHeaderStyle或DataGrid.RowStyle为数据网格列标题或数据网格行创建上下文菜单。见例:
<Window.Resources>
<ContextMenu x:Key="ColumnHeaderMenu">
<MenuItem Header="Header Option 1"/>
<MenuItem Header="Header Option 2"/>
</ContextMenu>
<ContextMenu x:Key="RowMenu">
<MenuItem Header="Row Option 1"/>
<MenuItem Header="Row Option 2"/>
</ContextMenu>
</Window.Resources>
<Grid>
<DataGrid ItemsSource="{Binding memberList}" AutoGenerateColumns="True">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ContextMenu" Value="{StaticResource ColumnHeaderMenu}"/>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
</Grid>