如何在WPF数据网格中为每列添加ContextMenu



这个问题类似于如何在WPF数据网格中添加Column ContextMenu,但我要做的是在WPF DataGrid中添加不同的ContextMenu PER Column。

DataGridTextColumn不是从具有ContextMenu属性的FrameworkElement派生的,因此不可能直接在DataGridTextColumn上设置ContextMenuDataGridCell也有一个ContextMenu,但我不知道如何使用它来设置列特定菜单。

这里的问题是如何为每列添加一个唯一的ContextMenu(列是动态生成的)。

谢谢!

以下是在显式设置列时如何实现这一点的示例:

 <DataGrid ItemsSource="{Binding MyItems}" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Column1Data}" HorizontalAlignment="Stretch">
                            <TextBlock.ContextMenu>
                                <ContextMenu>
                                    <MenuItem Header="Col 1 Item 1"/>
                                    <MenuItem Header="Col 1 Item 2"/>
                                </ContextMenu>
                            </TextBlock.ContextMenu>
                        </TextBlock>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox IsChecked="{Binding Column2Data}" HorizontalAlignment="Stretch" >
                            <CheckBox.ContextMenu>
                                <ContextMenu>
                                    <MenuItem Header="Col 2 Item 1"/>
                                    <MenuItem Header="Col 2 Item 2"/>
                                </ContextMenu>
                            </CheckBox.ContextMenu>
                        </CheckBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

此示例包括Text列和CheckBox列。您可以修改CellTemplate以满足您的需求,当然也可以使用资源来避免代码重复。

相关内容

  • 没有找到相关文章

最新更新