房产 Foo
在我的DataContext
ViewModel {
Visibility Foo;
}
但我不知道如何访问
Foo
在 Column
内.在这种情况下,我假设它可能正在寻找 Foo
在任何绑定(bind)到 DataGrid
的对象中ItemsSource
<DataGrid Visibility="{Binding Foo}"> // works
<DataGrid.Columns>
<DataGridTextColumn Visibility="{Binding Foo}" /> // fails
我试过了
Binding="{Binding DataContext.Foo}"
还有一堆东西
RelativeSource
标签也是如此。此外,是否有某种方法可以从 GUI 中查看和选择要绑定(bind)的属性?
编辑:事实证明,列本身不是 FrameworkElements,因此它们无法找到 DataGrid 祖先。但是,您可以使用下面答案中的技术将列的 CellTemplate 的属性绑定(bind)到 DataContext。
最佳答案
这应该有效:
<DataGridTextColumn Visibility="{Binding Path=DataContext.Foo, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
您对绑定(bind)到当前项目的列是正确的 - 这就是您需要使用
RelativeSource
的原因获取 DataGrid,然后访问 Foo
属性(property)在其DataContext
.至于选择要绑定(bind)的属性,WPF 设计器的属性面板和 Visual Studio 插件(如 Resharper)可以提供帮助,但最终除了简单绑定(bind)之外,它们在任何事情上都做得不好,所以你只剩下什么了是你自己和你对正在发生的事情的理解。
关于.net - 从 DataGridColumn 绑定(bind)到 DataContext 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17867853/