绑定 WPF Datagrid 列的 Visibility 属性?我的错在哪里?

Posted

技术标签:

【中文标题】绑定 WPF Datagrid 列的 Visibility 属性?我的错在哪里?【英文标题】:Binding the Visibility property of a WPF Datagrid column? Where is my fault? 【发布时间】:2011-11-30 03:26:03 【问题描述】:

在设置我的 WPF DataGrid 列的循环中,我想使用以下代码将列可见性绑定到我的“VisibilityList”中的成员“i”:

var bindingColumnVisibilty = new Binding(string.Format("VisibilityList[0]", i));
BindingOperations.SetBinding(customBoundColumn, DataGridColumn.VisibilityProperty, bindingColumnVisibilty);

我已经在循环开始之前设置了 DataContext:

TestControlDataGrid.TestDataGrid.DataContext = dataGridSource;

dataGridSource 类包含:

public List<Visibility> VisibilityList;

这似乎不起作用。我是否正确设置了 DataContext 和绑定?在这个循环之后我用以下设置 ItemsSource 有关系吗?

TestDataGrid.ItemsSource = dataGridSource.DataList;

【问题讨论】:

看如下链接,问题说明:***.com/questions/502389/… 我在属性更改时使用了代码隐藏和手动更新可见性:***.com/questions/4019236/… 我认为问题在于列集合不会自然地继承自数据网格的数据上下文。我会做一些研究,并会报告回来.. 【参考方案1】:

好的,事实证明 DataGridColumn 没有从 DataGrid 继承 DataContext,因为它不在逻辑(或可视)树中,所以这就是我的绑定不起作用的原因。

显示了一种解决方法here

【讨论】:

【参考方案2】:

您将 VisabilityList 格式化为字符串。您需要将其保留为可见性。

【讨论】:

但如果我尝试: var bindingColumnVisibilty = new Binding(dataGridSource.VisibilityList[i]);然后给我错误“'System.Windows.Data.Binding.Binding(string)' 的最佳重载方法匹配有一些无效参数”和“参数 1:无法从 'System.Windows.Visibility' 转换为 'string'”

以上是关于绑定 WPF Datagrid 列的 Visibility 属性?我的错在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

WPF DataGrid动态生成列的单元格背景色绑定

wpf 通过为DataGrid所绑定的数据源类型的属性设置Attribute改变DataGrid自动生成列的顺序

WPF DataGrid 将单元格绑定到具有动态列的数据模型

WPF DataGrid 绑定数据及时更新的处理

在wpf中怎么获取datagrid某行某列的值啊?急!跪求!

Datagrid WPF中的SelectedItem绑定