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