我尝试将DataGridComboBoxColumn
更改为DataGridTemplateColumn
但未成功。
DataGridComboBoxColumn
按预期工作,但DataGridTemplateColumn
中的Combobox不是。如果我更改此Combobox中的值,它将更改所有可见行中的所有可见组合框值。
我错过了什么?
DataGrid是这样的:
<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" />
用于设置Books表中的国家/地区(ID)。我使用CollectionViewSource
用于Books(bookViewSource)和Country(countryLookup)。
无法正常工作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>
请帮助。感谢。
答案 0 :(得分:0)
删除Source={StaticResource bookViewSource}
:
<ComboBox x:Name="CountryCombo"
ItemsSource="{Binding Source={StaticResource countryLookup}}"
DisplayMemberPath="CountryName"
SelectedValuePath="ID"
SelectedValue="{Binding Country, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
答案 1 :(得分:0)
这解决了我的问题:
添加IsSynchronizedWithCurrentItem =&#34; False&#34;到DataGridTemplateColumn中的Combobox并删除Source = {StaticResource bookViewSource},如mm8所示。