2010-05-06 12 views
3

est-il un moyen simple d'avoir un BindingList composé de plusieurs bindinglists? c'est-à-dire la "vue" des listes.C# BindingList en bindinglists

C'est-à-dire: J'ai 3 listes (list1, list2, list3). Je veux une liste qui soit toujours l'union des 3 listx (on peut supposer qu'aucun objet n'est contenu dans 2 listes différentes).

Certes, je peux réussir à utiliser la propriété ListChange mais peut-être y a-t-il une façon plus intelligente de faire cela?

Répondre

1

Pour ce faire, vous devez créer votre propre type, mettre en œuvre IList, IBindingList (et idéalement IBindingListView), et éventuellement ICancelAddNew et IRaiseItemChangedEvents. Vous avez également besoin d'un indexeur non-objet public (public T this[int index] {get;}) ou ITypedList.

D'avoir fait les choses similaire à cela, je vous conseille fortement; ne pas, sauf si c'est vraiment important. Il serait plus pragmatique de copier les références dans un nouveau BindingList<>.

aussi; avec de nouveaux objets; dans quelle liste irait-il?

+0

Je ne veux que l'affichage de la liste intérieure, de nouveaux éléments seront directement ajoutés à l'une des listes internes – Toto

1

Avez-vous regardé dans la classe CompositeCollection? En fonction de ce que vous essayez de faire, cela peut aider: il a pour but de combiner plusieurs collections en une seule collection (généralement à des fins d'affichage/de liaison). Ainsi, vous pouvez créer un CompositeCollection et y ajouter vos trois instances BindingList. Le CompositeCollection sera automatiquement mis à jour pour inclure les membres des listes "enfant".

+0

Celui-là est nouveau pour moi; à votre santé! –

+0

Vous pouvez également créer 'CompositeCollection' dans du code ou dans Xaml. Cela peut être assez flexible! –