有时最简单的例子是最难找到的。 。 。
我有一个包含2列的数据网格。一列包含角色信息,另一列应包含一个包含可用用户列表的组合框。组合框中的数据与第一列中的数据无关。由于组合框没有datacontext,只有一个itemsource而我似乎也无法使用绑定这一事实,我被抛弃了。
有人可以指点一个简单的例子,它为表格和组合框中的数据使用两个不同的数据集吗?
答案 0 :(得分:8)
datagrid中的列没有datacontext,因为它们从未添加到可视树中。听起来有点奇怪,但看看vinces blog,它有一个很好的视觉布局的例子。绘制网格后,单元格具有数据上下文,您可以使用常规绑定(而非静态资源)在其中设置组合框项目源。
您可以这样访问组合框项目源
<dg:DataGridComboBoxColumn>
<dg:DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" />
</Style>
</dg:DataGridComboBoxColumn.EditingElementStyle>
</dg:DataGridComboBoxColumn>
答案 1 :(得分:2)
而不是使用DataGridTextColumns而是使用DataGridComboBoxColumn。然后使用ItemsSource填充数据,ItemsSource在下面的示例中指向静态资源中的外部枚举,最后一个将结果绑定到目标对象,该目标对象将保留SelectedItemBinding中的用户选择。
<DataGrid.Columns>
<DataGridComboBoxColumn Header="MySelections"
SelectedItemBinding="{Binding MySelectionsProperty}"
ItemsSource="{Binding Source={StaticResource mySelectionsEnum}}" />
</DataGrid.Columns>
上查看MSDN上的完整示例