我试图将Xceed数据网格中列的可见性绑定到复选框的IsChecked值 .
<xcdg:DataGridControl ReadOnly="{Binding ElementName=ShowReferenceColumn, Path=IsChecked}">
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="Reference" Visible="{Binding ElementName=ShowReferenceColumn, Path=IsChecked}" />
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
数据网格的ReadOnly属性通过复选框IsChecked值的更新来更新,但列的可见性不会更改 . 我在列上的绑定中遗漏了什么吗?
Edit:
这里的ReadOnly属性是一个属性的例子,我可以让绑定工作 . 实际上,它不会绑定到用于列可见性的相同复选框 .
2 回答
试试这个:
Edit:
然后,您需要将
CheckBox
的IsChecked
属性绑定到视图模型的source属性,然后将列的Visible
属性绑定到同一源属性:您不能在此上下文中使用
ElementName
作为列,并且CheckBox
不属于同一个名称范围 .最近也遇到了类似的问题 .
您可以只使用 Visible 属性,使用以下通用方法,并且易于理解:
例如,如果typeOfAncestor为 xcdg:MergedColumn 且BooleanSourceProperty为 IsChecked ,则代码应为:
然后问题就可以解决,有时如果有一个例外“集合被修改;枚举操作可能无法执行 . ”,也可以轻松避免异常 .
Reference: https://xceed.com/forums/topic/Column-visible-binding-issue-MVVM/