我想通过右键单击列标题来通过用户可用的DataGrid来控制ContextMenu列的可见性。 ContextMenu显示所有可用列的名称。我正在使用MVVM设计模式。

我的问题是:如何将DataGridColumnVisibility属性绑定(bind)到位于IsChecked中的MenuItemContextMenu属性。

一些样机代码:

<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/

10-12 22:39