我想通过右键单击列标题来通过用户可用的DataGrid
来控制ContextMenu
列的可见性。 ContextMenu
显示所有可用列的名称。我正在使用MVVM设计模式。
我的问题是:如何将DataGridColumn
的Visibility
属性绑定(bind)到位于IsChecked
中的MenuItem
的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>
长笛长笛
<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>
如果我不清楚,请让我知道,我将尽力详细说明。
干杯,
最佳答案
我刚刚写了一篇有关该主题的博客文章。它允许通过右键单击任何列标题可访问的ContextMenu来显示或隐藏DataGridColumns。该任务仅通过附加属性完成,因此符合MVVM。
See blog post
关于WPF数据网格: Binding DataGridColumn visibility to ContextMenu MenuItems IsChecked (MVVM),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1560871/