我试着将DataGridComboBoxColumn
更改为DataGridTemplateColumn
,但没有成功。WPF DataGrid组合框绑定
DataGridComboBoxColumn
按预期工作,但DataGridTemplateColumn
中的Combobox不是。如果我在此Combobox中更改了一个值,它将会更改所有可见行中的所有可见组合框的值。
我错过了什么?
数据网格是这样的:
<DataGrid x:Name="bookDataGrid"
AutoGenerateColumns="False"
EnableRowVirtualization="True"
ItemsSource="{Binding Source={StaticResource bookViewSource}}">
的DataGridComboboxColumn
这样的:
<DataGridComboBoxColumn x:Name="countryColumn"
ItemsSource="{Binding Source={StaticResource countryLookup}}"
DisplayMemberPath="CountryName"
SelectedValuePath="ID"
SelectedValueBinding="{Binding Country,UpdateSourceTrigger=PropertyChanged}"
Header="Country"
Width="SizeToCells" />
它用于设定国家(ID)在书籍表。我为图书(bookViewSource)和国家(countryLookup)使用CollectionViewSource
。
的工作不DataGridTemplateColumn
这样的:
<DataGridTemplateColumn x:Name="CountryTemplateColumn">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<ComboBox x:Name="CountryCombo"
ItemsSource="{Binding Source={StaticResource countryLookup}}"
DisplayMemberPath="CountryName"
SelectedValuePath="ID"
SelectedValue="{Binding Country, Source={StaticResource bookViewSource}, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
请帮助。谢谢。
已删除,但...我得到了额外的问题:它也在改变可见行的数据库。那就是:如果我选择第一行的国家,它将更改数据库中可见行的国家/地区! – Prodromos
您的Book实体类应该有一个Country属性,该属性包含本书当前选定属性的ID。它是在您选择数据库中的项目时设置的此属性。 – mm8
是的,这是正确的。它有一个Country属性,它是从Combobox中选择的ID。奇怪的是DataGridComboboxColumn工作正常。但是Tamplatecom不是! – Prodromos