In meiner Anwendung beziehe ich Quelldaten für meine Combobox (innerhalb eines Datagrid) aus folg. Klasse:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Database_Test { public class Standardspalten:List<string> { public Standardspalten() { this.Add("VSNR"); this.Add("Vorname"); this.Add("Nachname"); this.Add("Beitrag"); } } } |
In XAML habe ich die Klasse als Resource hinzugefügt. Die Daten sind in der ComboBox abrufbar. Bis hier ist alles perfekt.
Wenn ich allerdings einen Eintrag in der ComboBox auswähle, wird dieser nicht gespeichert; sobald ich im Datagrid auf eine neue Zeile klicke, ist die ComboBox wieder leer.
Jetzt habe ich rausgefunden, dass wohl die SelectedItemBinding Property hier gesetzt werden muss. Wenn ich die allerdings auf die Resource setze, kommt eine Fehlermeldung. Das Programm läuft zwar sauber durch, trotzdem erscheint die Fehlermeldung im Ausgabefenster.
System.Windows.Data Error: 40 : BindingExpression path error: 'Standardspalten' property not found on 'object' ''DataRowView' (HashCode=52447826)'. BindingExpression:Path=Standardspalten; DataItem='DataRowView' (HashCode=52447826); target element is 'DataGridCell' (Name=''); target property is 'CellContent' (type 'String')
Der Grund für die Fehlermeldung ist mir auch einigermaßen klar. Die o.g. Klasse kann den ausgewählten Wert nicht speichern. Aber was soll ich als Ziel für SelectedItemBinding festlegen.
Hier noch der Auszug des Datagrid aus meiner XAML Datei:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| <DataGrid Name="data_Mapping" Grid.Column="1" Grid.Row="1" AutoGenerateColumns="False" IsReadOnly="False" ItemsSource="{Binding}" CanUserAddRows="False" > <DataGrid.Columns> <DataGridComboBoxColumn Header="Standard" Width="Auto" ItemsSource="{Binding Source={StaticResource Standardspalten}}" SelectedItemBinding="{Binding Path=Standardspalten}" /> <DataGridTextColumn Header="Import" Width="Auto" Binding="{Binding Import}" IsReadOnly="True" /> </DataGrid.Columns> </DataGrid> |
Schon vorab vielen Dank für Eure Hilfe
Gruß
Frank
Moderiert von
Kha: C#-Tags hinzugefügt
Moderiert von
Kha: XML-Tags hinzugefügt