Ich habe versucht, DataGridComboBoxColumn
zu DataGridTemplateColumn
ohne Erfolg zu ändern.WPF DataGrid Combobox Bindung
Die DataGridComboBoxColumn
funktioniert wie erwartet, aber die Combobox in DataGridTemplateColumn
ist nicht. Wenn ich einen Wert in dieser Combobox ändere, werden alle sichtbaren Comboboxenwerte in allen sichtbaren Zeilen geändert.
Was fehlt mir?
Datagrid ist wie folgt:
<DataGrid x:Name="bookDataGrid"
AutoGenerateColumns="False"
EnableRowVirtualization="True"
ItemsSource="{Binding Source={StaticResource bookViewSource}}">
Die DataGridComboboxColumn
wie folgt aus:
<DataGridComboBoxColumn x:Name="countryColumn"
ItemsSource="{Binding Source={StaticResource countryLookup}}"
DisplayMemberPath="CountryName"
SelectedValuePath="ID"
SelectedValueBinding="{Binding Country,UpdateSourceTrigger=PropertyChanged}"
Header="Country"
Width="SizeToCells" />
Es verwendet wird, um das Land (ID) in Bücher Tabelle zu setzen. Ich verwende CollectionViewSource
für Bücher (bookViewSource) und Land (countryLookup).
Die nicht DataGridTemplateColumn
wie diese Arbeit:
<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>
Bitte um Hilfe. Vielen Dank.
Entfernt, aber ... Ich bekomme zusätzliche Probleme: Es ändert sich auch die Datenbank für die sichtbaren Zeilen. Das heißt: Wenn ich ein Land für die erste Zeile wähle, ändert sich das Land für die sichtbaren Zeilen in der Datenbank! – Prodromos
Ihre Book-Entitätsklasse sollte eine Country-Eigenschaft haben, die die ID der aktuell ausgewählten Eigenschaft des Buchs enthält. Diese Eigenschaft wird festgelegt, wenn Sie ein Element in der Datenbank auswählen. – mm8
Ja das ist richtig. Es hat eine Country-Eigenschaft, die die aus der Combobox ausgewählte ID ist. Das seltsame ist, dass die DataGridComboboxColumn funktioniert gut. Aber das Tamplatecumumn ist nicht! – Prodromos