3 Stimmen

WPF: IEditableCollectionView und CanAddNew und leere Sammlungen

Wir hatten einige Probleme mit dem wpf datagrid und IEditableCollectionView (obwohl diese Frage gilt für die Verwendung von IEditableCollectionView und ItemsControl) Wenn Sie eine Sammlung ohne Elemente in ihm haben, kann die IEditableCollectionView nicht bestimmen, welche Elemente eingefügt werden sollte, so dass es setzt CanAddNew=false wir haben eine Lösung gefunden aquí (tief in den Kommentaren vergraben), die wie folgt lautet:

Wenn Sie von ObservableCollection wie folgt ableiten

public class PersonsList : ObservableCollection<Person> { }

werden Sie feststellen, dass, wenn die ursprüngliche Sammlung leer ist, kein NewItemPlaceHolder in der Ansicht angezeigt wird. Das liegt daran, dass PersonsList den Typ T zur Entwurfszeit nicht auflösen kann. Ein Workaround, der bei mir funktioniert, ist die Übergabe des Typs T als Parameter an die Klasse wie folgt

PersonsList<T> : ObservableCollection<T> where T : Person { }

Bei diesem Ansatz wird der NewItemPlaceHolder auch dann platziert, wenn die Sammlung leer ist.

Ich frage mich, ob es eine Schnittstelle gibt, die ich auf meine Sammlungen implementieren kann, die die IEditableCollectionView informieren, welche Art zu erstellen, sollte ich eine AddNew-Anforderung erhalten.

1voto

wpfwannabe Punkte 14089

Versuchen Sie die Umsetzung IEditableObject auf T und sehen Sie, ob das Problem verschwindet. Vincent Sibal sagt, dass dies notwendig ist. Aber er behauptet auch PersonsList<T> ist ebenfalls erforderlich, aber das haben Sie bereits herausgefunden. Hoffentlich, IEditableObject reicht aus, und Sie können eine nicht-generische Klasse verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X