Max*_*com 2 wpf binding datagrid combobox datagridcomboboxcolumn
我有一个包含ComboBox作为列的DataGrid.
让我们考虑DataGrid将ItemsSource作为ObservableCollection而ComboBox ItemsSource是List.
我想基于DataGrid ItemsSource中的属性设置ComboBox SelectedItem属性.
但是,Product类具有类型为int而不是ProductType的属性ProductTypeId.
那么如何设置ComboBox SelectedItem以使其显示Product.ProductTypeId的值.而且我想将SeletedItems与Mode = TwoWay绑定,这样每当ComboBox SelectedItem发生变化时,它都会反映在DataGrid的ItemsSource中.
任何帮助将非常感激.
谢谢.
这DataGridComboBoxColumn正是你正在寻找的.要正确使用它,您需要了解以下属性:
SelectedValueBinding - 这是对象/ viewmodel上属性的绑定SelectedValuePath - 这是内部项目的value属性ComboBox.SelectedValueBinding当用户从中选择项目时,这将分配给您设置的属性ComboBox.DisplayMemberPath - 这是关于里面项目的描述属性 ComboBox设置ItemsSource的DataGridComboBoxColumn是一个有点不同; 请注意下面的示例,看看它是如何完成的.
这些与标准相同(除外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>
Run Code Online (Sandbox Code Playgroud)