Hallo zusammen
Ich habe ein Grid, welchem ich zur Laufzeit neue Spalten hinzufüge oder entferne. Diese DataGridComboBoxColumn
-Spalten habe ein ItemsSource
- sowie ein SelectedItem
-Binding.
Das Problem ist nun, sobald ich die Spalten einmal ausgeblendet habe und danach wieder einblenden möchte, funktioniert das SelectedItem-Binding nicht mehr, die Spalten sind dann einfach leer. Ich habe das gleiche Verhalten, wenn ich die Spalten jedes Mal lösche und dann wieder neu erstelle und hinzufüge.
So erstelle ich meine Spalte im CodeBehind:
private static DataGridColumn GetListColumn(ListAttribute attribute, BindingBase binding) {
string path = string.Format(
CultureInfo.InvariantCulture,
"AttributeValues.Attributes[{0}].ListItems",
attribute.ID);
var sourceBinding = new Binding {
Path = new PropertyPath(path)
};
var column = new DataGridComboBoxColumn();
var style = new Style(typeof(ComboBox));
style.Setters.Add(new Setter(ItemsControl.ItemsSourceProperty, sourceBinding));
column.ElementStyle = style;
column.EditingElementStyle = style;
column.SelectedItemBinding = binding;
column.DisplayMemberPath = "Name";
return column;
}
Und so lösche oder erstelle ich die Spalten:
private void UpdateColumns() {
foreach (var attributeColumn in _attributeColumns) {
GridItems.Columns.Remove(attributeColumn);
}
_attributeColumns.Clear();
if (ViewModel.EditorType == SectionEditorType.Attribute) {
var builder = new AttributeColumnBuilder();
var attributes = ((PartsSubViewModel)ViewModel).SectionPartAttributes;
foreach (var column in builder.GetColumns(attributes)) {
_attributeColumns.Add(column);
GridItems.Columns.Add(column);
}
}
}
Damit man sich das besser vorstellen kann, habe ich ein Bild angehängt.
Die Spalte, die noch Werte anzeigt, ist eine die im XAML definiert und daher nicht betroffen ist.
Danke für jede Hilfe,
LG Michael