edt*_*guy 5 c# windows wpf datagrid
此问题类似于如何在WPF DataGrid中添加列ContextMenu,但我要做的是ContextMenu在WPF Datagrid中添加不同的PER COLUMN.
DataGridTextColumn不是从FrameworkElement哪个ContextMenu属性派生出来的,所以不可能ContextMenu直接在a上设置DataGridTextColumn. DataGridCell也有一个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>
Run Code Online (Sandbox Code Playgroud)
此示例包括一Text列和一CheckBox列。您可以修改CellTemplate以满足您的要求,当然还可以使用资源来避免代码重复。
| 归档时间: |
|
| 查看次数: |
4653 次 |
| 最近记录: |