.net - 从 DataGridColumn 绑定(bind)到 DataContext 属性

标签 .net wpf xaml binding datacontext

房产 Foo在我的DataContext

ViewModel {
    Visibility Foo;
}

但我不知道如何访问 FooColumn 内.在这种情况下,我假设它可能正在寻找 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/

相关文章:

c# - 在基于.NET Framework 2.0的项目中使用.NET Framework 3.5库添加LINQ To XML功能

wpf - 触发命令时强制绑定(bind)更新

c# - WPF 动画 : How do i make it slide in?

c# - Windows服务设计

.net - 防止组合下降

.net - 与 Mono 和具有依赖关系的多个项目一起使用的正确构建系统是什么,不包括 MonoDevelop?

c# - 如何读取 xml 到数据网格中的组合框?

wpf - 简单的 WPF 单选按钮绑定(bind)?

wpf - 为什么 XAML 资源与 CSS 样式不同?

wpf - 如何将属性名称绑定(bind)到绑定(bind)的列以作为命令参数传递