Kann ich eine Sammlung von XAML filtern?

8

Ich habe eine wpf-mvvm-Anwendung.

Ich habe eine beobachtbare Sammlung in meinem Viewmodel

%Vor%

"BatchImportResultMessageDto" enthält zwei Eigenschaften ..

Ergebnistyp ... und Nachricht. Der Ergebnistyp kann Erfolg oder Misserfolg sein.

Ich muss den Erfolg in einer Listbox anzeigen und in einer anderen Listbox fehlschlagen.

Ich kann dies tun, indem ich 2 beobachtbare Sammlungen im Viewmodel habe, um Erfolg / Misserfolg zu halten.

%Vor%

Aber gibt es einen anderen besseren Weg, damit ich ihn filtern kann (ohne neue zwei Sammlungen)?

    
Relativity 07.02.2011, 16:48
quelle

2 Antworten

11

Sie können eine CollectionViewSource verwenden und sie zu einer Eigenschaft von machen Ihr Anzeigemodell, und binden Sie dieses anstelle Ihrer ImportMessageList -Auflistung direkt vom XAML. Setzen Sie Ihre ImportMessageList -Auflistung als Quelle von CollectionViewSource und konfigurieren Sie dann ein Prädikat, um Ihre Filterung für CollectionViewSource durchzuführen.

Etwas wie:

%Vor%     
devdigital 07.02.2011, 16:54
quelle
10

Sie können dies tun, indem Sie zwei CollectionViewSource Objekte und Einstellungen erstellen ein Filter auf jedem.

So erstellen Sie ein CVS in xaml aus einer VM-Bindung ( Quelle ):

%Vor%

Wie man ein CVS in einem Code hinterher filtert (Sie können reflection verwenden, um sich die Eigenschaften Ihres Modells anzuschauen, wenn Sie keinen Bezug darauf herstellen wollen. Quelle ):

%Vor%

mit (Code hinten)

%Vor%     
Ragepotato 07.02.2011 16:55
quelle

Tags und Links