WPF DataGrid:绑定DataGridColumn可见性到ContextMenu MenuItems IsChecked(MVVM) [英] WPF DataGrid: Binding DataGridColumn visibility to ContextMenu MenuItems IsChecked (MVVM)

查看:878
本文介绍了WPF DataGrid:绑定DataGridColumn可见性到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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆