用不同的类型绑定数据网格中组合框的选定项



我有一个包含ComboBox作为列的DataGrid。

假设DataGrid的ItemsSource为ObservableCollection, ComboBox的ItemsSource为List。

我想根据DataGrid ItemsSource中的属性设置ComboBox SelectedItem属性。

但是Product类的属性ProductTypeId是int类型,而不是ProductType。

那么我如何设置ComboBox SelectedItem使它显示Product的值。选择的ProductTypeId。我还想将SeletedItems与Mode = TwoWay绑定,以便每当ComboBox SelectedItem发生变化时,它将反映在DataGrid的ItemsSource中。

任何帮助都将非常感激。

谢谢。

DataGridComboBoxColumn完全符合您的要求。要正确使用它,您需要了解以下属性:

  • SelectedValueBinding -这是绑定到你的对象/视图模型
  • 的属性
  • SelectedValuePath -这是ComboBox内部项目的值属性。当用户从ComboBox中选择一个项目时,这将分配给您在SelectedValueBinding中设置的属性。
  • DisplayMemberPath -这是ComboBox
  • 内项目的描述属性

设置DataGridComboBoxColumnItemsSource略有不同;注意下面的例子,看看它是如何完成的。

这些都是相同的(除了SelectedValueBinding),你有一个标准的ComboBox

下面是一个示例,说明您的列可能是什么样子。

<DataGridComboBoxColumn Header="Product Type" DisplayMemberPath="ProductType" SelectedValuePath="ProductTypeId" SelectedValueBinding="{Binding ProductTypeId, UpdateSourceTrigger=PropertyChanged}">
    <DataGridComboBoxColumn.ElementStyle>
        <Style TargetType="{x:Type ComboBox}">
            <Setter Property="ItemsSource" Value="{Binding AvailableProductTypes}"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
        </Style>
    </DataGridComboBoxColumn.ElementStyle>
    <DataGridComboBoxColumn.EditingElementStyle>
        <Style TargetType="{x:Type ComboBox}">
            <Setter Property="ItemsSource" Value="{Binding AvailableProductTypes}"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
        </Style>
    </DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>

我有同样的问题,几乎放弃了。但后来我意识到,这种绑定一定归因于UpdateSourceTrigger=PropertyChanged

SelectedIndex="{Binding SelectedTelefonIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

最新更新