C# 在WPF DataGrid中绑定DataGridColumn的可见属性

C# 在WPF DataGrid中绑定DataGridColumn的可见属性,c#,wpf,data-binding,C#,Wpf,Data Binding,我无法将WPF datagridtextcolumn的Visible属性绑定到布尔值 我的约束表达式是 {Binding Path=DataContext.IsThisColumnVisible, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window},Converter={StaticResource vc}} 我已经检查了转换器是否工作(bool到可见性枚举)并且在范围内 如果对列的标题使用相同的表达式,

我无法将WPF datagridtextcolumn的Visible属性绑定到布尔值

我的约束表达式是

{Binding Path=DataContext.IsThisColumnVisible, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window},Converter={StaticResource vc}}
我已经检查了转换器是否工作(bool到可见性枚举)并且在范围内

如果对列的标题使用相同的表达式,则标题将按预期显示“false”

Visible是一个依赖属性,因此应该是可绑定的

有人知道我做错了什么吗?或者是否有其他人能够绑定到visible属性

问候,


马特

因为代码太少,所以很难说。Visual Studio的“输出”窗口(在“调试”下)中有什么内容?这通常会给你一个问题的线索。

我解决了这个问题

DataGridCOlumn不是框架元素,因此FindAncestor调用失败(DataGridCOlumn不是可视化树的一部分)


必须将绑定表达式的源属性设置为staticresource,它工作正常。

如果可以从可以使用的代码进行绑定

BindingOperations.SetBinding(DatagridColumInstance,
                             DatagridColum.VisibilityProperty,
                             myNewBindDef);

我也在寻找同样的东西,并找到了一个很好的方法来完成它。

是的。转发datacontext是一种方法。类似但更简单的方法:下面是使用StaticResource代理转发DataContext的示例:我使用的是MVVM,它与提供的链接一起工作: