14

我有一个包含 2 列的数据网格。一列包含角色信息,另一列应该有一个包含可用用户列表的组合框。组合框中的数据与第一列中的数据无关。

组合框没有数据上下文,只有一个项目源,而且我似乎也无法使用绑定,这让我感到很震惊。

对表格和组合框中的数据使用两个不同数据集的方法是什么?

4

2 回答 2

8

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

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

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

看看这里这里的一些代码

于 2009-11-15T11:43:20.303 回答
4

而不是使用DataGridTextColumn一个,而是使用一个DataGridComboBoxColumn。然后使用 填充数据ItemsSource,在下面的示例中指向enum静态资源中的外部,最后将结果绑定到目标对象,该目标对象将在SelectedItemBinding.

<DataGrid.Columns>

<DataGridComboBoxColumn Header="MySelections"  
                        SelectedItemBinding="{Binding MySelectionsProperty}" 
                        ItemsSource="{Binding Source={StaticResource mySelectionsEnum}}" />
</DataGrid.Columns>

请参阅 MSDN 上DataGridComboBoxColumn 类的完整示例

于 2013-09-09T13:01:05.767 回答