【发布时间】:2013-07-25 22:14:18
【问题描述】:
属性Foo在我的DataContext中
ViewModel {
Visibility Foo;
}
但我不知道如何在Column 中访问Foo。在这种情况下,我假设它可能在绑定到 DataGrid ItemsSource 的任何对象中寻找 Foo
<DataGrid Visibility="{Binding Foo}"> // works
<DataGrid.Columns>
<DataGridTextColumn Visibility="{Binding Foo}" /> // fails
我试过了
Binding="{Binding DataContext.Foo}"
还有一堆带有RelativeSource 标签的东西。
另外,有什么方法可以从 GUI 中查看和选择要绑定的属性吗?
编辑:原来Columns本身不是FrameworkElements,所以无法定位DataGrid的祖先。但是,您可以使用下面答案中的技术将 Column 的 CellTemplate 的属性绑定到 DataContext。
【问题讨论】:
-
您能否详细说明“选择要绑定的属性”是什么意思?或者至少想要的效果是什么?
-
我想知道是否有一种方法可以从树视图中查看和选择项目,而不必记住如何编写所有 Path/RelativeSource/DataContext/etc 标记
-
我同意您可以在
CellTemplate上使用 Adi 答案中的RelativeSource绑定...如果您喜欢该解决方案,那么我认为您应该将其发布为解决方案并将其标记为答案,因为如果没有使用CellTemplate的关键规定,Adi 的代码就无法工作。浏览此问题的人可能会合理地查看标记的“答案”并假设它可以在不阅读您的 cmets 的情况下正常工作。我添加了一种方法来绑定列的可见性,而不是使用CellTemplate隐藏单元格。
标签: .net wpf xaml binding datacontext