2

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

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

我可以DataGrid以这种方式绑定到 a 吗?我已经弄清楚如何绑定到表以将值放入TextBox列中,但我不知道如何获取组合框列。

4

2 回答 2

0

这最初是作为这个问题的答案发布的

数据网格中的列没有数据上下文,因为它们从未添加到可视化树中。听起来有点奇怪,但看看vince 的博客,它有一个很好的视觉布局示例。绘制网格后,单元格具有数据上下文,您可以使用普通绑定(不是静态资源..)在其中设置组合框项目源

您可以这样访问组合框项目源

<DataGridComboBoxColumn>
   <DataGridComboBoxColumn.EditingElementStyle>
      <Style TargetType="ComboBox">
         <Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" />
      </Style>
   </DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>

这意味着您可以将组合框 ItemsSource 绑定到行(项目)上的某个属性。

看看这里这里的一些代码。您还需要为非编辑元素设置项目来源,本文所述

于 2013-05-06T12:06:38.560 回答
0

您可以将 ListView 与 GridView 一起使用,而不是使用 DataGrid,并通过一个转换器创建 GridView,该转换器绑定到包含有关列应该是什么的必要信息的某个对象。如果我想绑定到一个未知维度的数组,我通常会这样做。

于 2013-05-01T08:15:21.170 回答