如何将 WPF 数据网格数据列可见性绑定到用户控件的视图模型上的属性?



我在usercontrol中包含一个wpf datagrid。

在用户控件的ViewModel中,我有以下定义:

private Visibility _ColumnVisibility;
public Visibility ColumnVisibility
{
get { return _ColumnVisibility;}
set {this._ColumnVisibility= value;
     OnNotifyPropertyChanged("ColumnVisibility");}
}

我的XAML中的列定义如下:

<DataGrid.Columns>
  <DataGridTextColumn Binding="{Binding UserCode}"
    Header="UserCode"
    Visibility="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=ColumnVisibility}"/>
</DataGrid.Columns>

我在运行时获得以下例外:

system.windows.data错误:4:找不到绑定的源 参考的"亲属" Findancestor, Ancestortype ='System.Windows.controls.usercontrol', 祖先='1''。绑定表达:路径=柱效率; dataitem = null;目标元素是" datagridtextcolumn" (HashCode = 21737301(;目标属性为"可见性"(类型 "可见性"(

将数据列列可见性绑定到包含usercontrol的ViewModel中定义的属性的最佳方法(最简单(的方法是什么?

我在SO anjumskhan 中找到了一个优雅的解决方案>如何根据属性隐藏wpf datagrid列

<!-- 
AnjumSKhan: I would prefer a more elegant approach which involves using a Freezable.
-->
<Window.Resources>
<DiscreteObjectKeyFrame x:Key="FlagKey" Value="{Binding Flag}"/>
</Window.Resources>

最新更新