为datagrid的标题添加不同的上下文菜单

时间:2010-04-24 21:32:02

标签: c# .net wpf

我想在WPF上为我的datagrid标题添加不同的上下文菜单。我怎么能这样做?

2 个答案:

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