Laden...

ICollectionView in MVVM

Letzter Beitrag vor einem Jahr 4 Posts 514 Views
ICollectionView in MVVM

Ich möchte gerne ein ViewModel erstellen, das potentiell später einmal in einer Cross-Plattform Anwendung eingesetzt werden kann.

Immer wieder stoße ich darauf, dass ich ICollectionView im ViewModel einsetzen kann. Ich habe noch keinen Artikel gesehen, der moniert, dass ICollectionView aus der Assembly WindowsBase stammt. Wenn ich den Sinn von MVVM richtig verstehe, dann sollte das ViewModel nicht von Windows-Komponenten abhängig sein.

Gibt es eine bessere Möglichkeit, um Dinge wie Sortierung und Filterung von Listen in den Griff zu bekommen? Oder sehe ich das zu eng? Ist MVVM eigentlich für Windows konzipiert?

MVVM ist ein Konzept, keine Implementierung. Es gibt daher nie eine Abhängigkeit an irgendwas. Hat auch nichts mit Windows* zutun.
Das ViewModel selbst stellt aber die Umsetzung dar; ist in den meisten Fällen also abhängig von der UI Technologie, wie zB WPF.
Je nach Framework geht das auch gar nicht.

*Glaube da verwechselst Du das technische "Window" mit dem OS "Windows".
WPF aber hat natürlich eine Abhängigkeit an das Betriebssystem Windows.

Ich möchte gerne ein ViewModel erstellen, das potentiell später einmal in einer Cross-Plattform Anwendung eingesetzt werden kann.

Das ist ein Wunsch, der sehr wahrscheinlich nur funktioniert, wenn Du auch ein Framework verwendest, das dafür gedacht ist.
WPF ist es nicht.

Ok, danke! Ich hatte gedacht, dass ein Gedanke hinter dem MVVM Konzept der ist, dass man die UI-Technologie austauschen kann - sofern sie Datenbindung unterstützt.

Wenn in diesem Konzept die für mich "UI-unabhängige" Komponente (ViewModel) nur UI-abhängig implementiert werden kann, dann habe ich das Pattern in dieser Hinsicht bisher falsch verstanden. Dann ergibt es Sinn, dass ICollectionView (u. ä.) in MVVM Artikeln verwendet werden.

Nicht die erhoffte Antwort - aber sie hilft. Danke! 😃

Die Austauschbarkeit von UI-Pattern erreichst Du mit einer Drei-Schichten-Architektur.

Das Model kannst Du i.d.R. wiederverwenden, aber nicht das ViewModel.
Das ViewModel ist vereinfacht ausgedrückt die UI-Logik für die View - und die sind sehr eng miteinander gekoppelt. Sowohl die Implementierung wie auch die Technik.

View und ViewModel haben zudem i.d.R. eine Abhängigkeit zu einem konkreten UI-Framework.
Die View kannst Du also problemlos innerhalb von WPF tauschen. Du kannst aber i.d.R. eben nicht das ViewModel zwischen Frameworks sharen.
Das ist auch nicht die Idee dahinter.