WPF中DataGrid列根据条件隐藏

Posted vagrant-boy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中DataGrid列根据条件隐藏相关的知识,希望对你有一定的参考价值。

一、采用代理
1、xaml的Resources中添加一个FrameworkElement的代理
<Window.Resources>
<FrameworkElement x:Key="Proxy" DataContext="{Binding}"/>
</Window.Resources>
2、用一个隐藏的ContentControl绑定FrameworkElement代理
<ContentControl Visibility="Collapsed" Content="{StaticResource Proxy}"/>
3、用代理做Visibility的数据源
<DataGridTextColumn Header="列二" Visibility="{Binding DataContext.IsVisibility,Source={StaticResource Proxy}}"/>

二、使用Freezable
BindingProxy类
public class BindingProxy:Freezable
{
protected override Freezable CreateInstanceCore()
{
return new BindingProxy();
//throw new NotImplementedException();
}

public static readonly DependencyProperty DataProperty = DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));

public object Data
{
get { return (object)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}
}

XAML引用BindingProxy
<local:BindingProxy x:Key="proxy" Data="{Binding}"/>

Visibility绑定
<DataGridTextColumn Header="列三" Visibility="{Binding Data.IsVisibility,Source={StaticResource proxy}}"/>

以上是关于WPF中DataGrid列根据条件隐藏的主要内容,如果未能解决你的问题,请参考以下文章

WPF MVVM模式如何控制DataGrid的列隐藏和显示

如何隐藏 WPF DataGrid 中的列标题?

easyUi datagrid设置列的开启和隐藏

如何使用 MVVM 自动隐藏 WPF 中的 DataGrid 列? [复制]

怎么知道用户选择的wpf的datagrid的哪一列

在wpf datagrid中,想要根据一个条件来改变datagrid行的背景颜色