我在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>