DataGrid使用绑定来创建带有组合框的表

时间:2013-04-26 17:54:30

标签: wpf data-binding datagrid wpf-controls wpf-4.0

我有DataGrid应该有第一列的文本列,然后后续列应该是每个列都有不同项目集的组合框。

问题是组合框列的数量是动态的,每个列的组合框中应该包含的项目也是动态的。它们在绑定时已知,但在编译时不知道。

我能以这种方式绑定到DataGrid吗?我已经想出如何绑定到表以将值导入TextBox列,但我不知道如何获取组合框列。

2 个答案:

答案 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绑定到行(项)上的某个属性。

查看一些代码herehere。您还需要设置非编辑元素的项目来源,如此post