绑定 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所绑定的数据源类型的属性设置Attribute改变DataGrid自动生成列的顺序
WPF DataGrid 将单元格绑定到具有动态列的数据模型