WPF DataGrid:绑定DataGridColumn可见性到ContextMenu MenuItems IsChecked(MVVM) [英] WPF DataGrid: Binding DataGridColumn visibility to ContextMenu MenuItems IsChecked (MVVM)
问题描述
我想通过右键单击列标题通过 ContextMenu
来控制 DataGrid
列可见性。 ContextMenu
显示所有可用列的名称。我使用MVVM设计模式。
I want to control DataGrid
column visibility through a ContextMenu
available to the user by right-clicking the column header. The ContextMenu
displays the names of all available columns. I am using MVVM design pattern.
我的问题是:如何绑定 DataGridColumn
的可见性
属性 IsChecked
属性 MenuItem
位于 ContextMenu
。
My question is: How do I bind the DataGridColumn
's Visibility
property to the IsChecked
property of a MenuItem
located in the ContextMenu
.
一些模型代码:
<UserControl.Resources>
<ContextMenu x:Key="ColumnHeaderContextMenu">
<MenuItem Header="Menu Item..1" IsCheckable="True" />
</ContextMenu>
<Style x:Key="ColumnHeaderStyle"
TargetType="{x:Type toolkit:DataGridColumnHeader}">
<Setter Property="ContextMenu"
Value="{StaticResource ColumnHeaderContextMenu}" />
</Style>
<BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" />
</UserControl.Resources>
... flaf flaf flaf
...flaf flaf flaf
<toolkit:DataGrid x:Name="MyGrid" AutoGenerateColumns="False"
ItemsSource="{Binding MyCollection, Mode=Default}"
EnableColumnVirtualization="True" IsReadOnly="True"
ColumnHeaderStyle="{StaticResource ColumnHeaderStyle}">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTextColumn Binding="{Binding Path=MyEntry}"
Header="MyEntry" Visibility="{Binding IsChecked, Converter=
{StaticResource booleanToVisibilityConverter}.... />
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
如果我不清楚请让我知道,我会尝试详细说明。
If I am being unclear please let me know and I will attempt to elaborate.
干杯,
推荐答案
我刚刚写了一篇关于这个主题的博客文章,它允许通过右键单击任何列标题可以访问的ContextMenu来显示或隐藏DataGridColumns,这个任务是纯粹完成的通过附加的属性,这是符合MVVM的。
I just wrote a blog post on this topic. It allows DataGridColumns to be shown or hidden through a ContextMenu that is accessible by right-clicking any column header. This task is accomplished purely through attached properties so it is MVVM-compliant.
这篇关于WPF DataGrid:绑定DataGridColumn可见性到ContextMenu MenuItems IsChecked(MVVM)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!