我有一个包含 2 列的数据网格。一列包含角色信息,另一列应该有一个包含可用用户列表的组合框。组合框中的数据与第一列中的数据无关。
组合框没有数据上下文,只有一个项目源,而且我似乎也无法使用绑定,这让我感到很震惊。
对表格和组合框中的数据使用两个不同数据集的方法是什么?
我有一个包含 2 列的数据网格。一列包含角色信息,另一列应该有一个包含可用用户列表的组合框。组合框中的数据与第一列中的数据无关。
组合框没有数据上下文,只有一个项目源,而且我似乎也无法使用绑定,这让我感到很震惊。
对表格和组合框中的数据使用两个不同数据集的方法是什么?
数据网格中的列没有数据上下文,因为它们从未添加到可视化树中。听起来有点奇怪,但看看vinces 博客,它有一个很好的视觉布局示例。绘制网格后,单元格具有数据上下文,您可以使用普通绑定(不是静态资源..)在其中设置组合框项目源
您可以这样访问组合框项目源
<dg:DataGridComboBoxColumn>
<dg:DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" />
</Style>
</dg:DataGridComboBoxColumn.EditingElementStyle>
</dg:DataGridComboBoxColumn>
而不是使用DataGridTextColumn
一个,而是使用一个DataGridComboBoxColumn
。然后使用 填充数据ItemsSource
,在下面的示例中指向enum
静态资源中的外部,最后将结果绑定到目标对象,该目标对象将在SelectedItemBinding
.
<DataGrid.Columns>
<DataGridComboBoxColumn Header="MySelections"
SelectedItemBinding="{Binding MySelectionsProperty}"
ItemsSource="{Binding Source={StaticResource mySelectionsEnum}}" />
</DataGrid.Columns>
请参阅 MSDN 上DataGridComboBoxColumn 类的完整示例