我有一个DataGrid
第一列应该有一个文本列,然后后面的列应该是组合框,每列都有一组不同的项目。
问题是组合框列的数量是动态的,每一列的组合框中应该包含的项目也是如此。它们在绑定时已知,但在编译时不知道。
我可以DataGrid
以这种方式绑定到 a 吗?我已经弄清楚如何绑定到表以将值放入TextBox
列中,但我不知道如何获取组合框列。
我有一个DataGrid
第一列应该有一个文本列,然后后面的列应该是组合框,每列都有一组不同的项目。
问题是组合框列的数量是动态的,每一列的组合框中应该包含的项目也是如此。它们在绑定时已知,但在编译时不知道。
我可以DataGrid
以这种方式绑定到 a 吗?我已经弄清楚如何绑定到表以将值放入TextBox
列中,但我不知道如何获取组合框列。
这最初是作为这个问题的答案发布的
数据网格中的列没有数据上下文,因为它们从未添加到可视化树中。听起来有点奇怪,但看看vince 的博客,它有一个很好的视觉布局示例。绘制网格后,单元格具有数据上下文,您可以使用普通绑定(不是静态资源..)在其中设置组合框项目源
您可以这样访问组合框项目源
<DataGridComboBoxColumn>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
这意味着您可以将组合框 ItemsSource 绑定到行(项目)上的某个属性。
您可以将 ListView 与 GridView 一起使用,而不是使用 DataGrid,并通过一个转换器创建 GridView,该转换器绑定到包含有关列应该是什么的必要信息的某个对象。如果我想绑定到一个未知维度的数组,我通常会这样做。