Laden...

Best Practice bei ViewModels

Erstellt von Kriz vor einem Jahr Letzter Beitrag vor einem Jahr 685 Views
K
Kriz Themenstarter:in
141 Beiträge seit 2017
vor einem Jahr
Best Practice bei ViewModels

Cheers,

mein aktueller Workflow in meinen Projekten (Xamarin/Maui/WPF):

Viewmodel:


public DetailViewModel(int itemID)
        {
            //ViewModel Zeug
        }

View CodeBehind:


public partial class DetailPage : ContentPage
        {
            public DetailPage(int itemID)
            {
                BindingContext = new DetailViewModel(itemID);
                InitializeComponent();
            }
        }

Aufrufen der View:


App.Current.MainPage = new DetailPage(123);

So hab ich es "damals" gelernt und so funktioniert es auch, aber mittlerweile frage ich mich, ob es der richtige Weg ist bzw ob es nicht einen besseren Weg gibt?!
Ich störe mich daran, dass ich den Parameter 123 erst an die View geben muss, damit diese ihn an das ViewModel weiter gibt.

Gibt es da bessere Ansätze?

Danke schonmal!

16.827 Beiträge seit 2008
vor einem Jahr

Jede Technologie Xamarin/Maui/WPF/WinForms/ASP.NET... hat leider seine eigene Best Practise von View Models.
Aber ist auch klar: View Models sind auf der UI Ebene - also spezifisch zur Technologie.

WPF folgt dem MVVM Pattern sehr stark. MAUI hat mit MVVM angefangen und bewegt sich solangsam Richtung MVU.
MVU wird insgesamt wichtiger, hat mittlerweile ein eigenes Toolkit im .NET Kosmos (https://github.com/dotnet/Comet).

Daher als Fazit: folge der Empfehlung der jeweiligen Technologie und versuch nicht übergreifend was zu adaptieren.

Gibt es da bessere Ansätze?

Generell ja: State Management.
In der JavaScript-Welt seit Jahren Alltag, in der Desktop -Welt seit Jahren vorhanden; kaum genutzt.
https://github.com/dotnet/reactive
https://github.com/reactiveui/reactiveui

K
Kriz Themenstarter:in
141 Beiträge seit 2017
vor einem Jahr

Erstmmal danke für die Antwort!

Generell finde ich den Ansatz von MVVM schon sehr praktisch, egal ob Desktop, Mobile, oder Web. Es ist einfach strukturierter als beispielsweise MVU.
Mir ging es hier speziell um das Übermitteln von Parametern von einem ViewModel zum Nächsten, ohne die View nutzen zu müssen, da das ja irgendwie dem Prinzip von MVVM widerspricht.
Klar gibt es x Nuget-Packages dafür, oder das interne MessageCenter bei Xamarin, aber das "fühlt sich nicht richtig an".

16.827 Beiträge seit 2008
vor einem Jahr

MVVM is halt super aufblasen, sehr hohe Lernhürde, viel Aufwand - im Vergleich extrem unbeliebt.
Und wenn man die Trends so anschaut, dann wird MVU in der UI wohl den Lead übernehmen, egal ob React, Flutter, Blazor, MAUI. Alle verfolgen sie stark MVU oder evaluieren den Wechsel dort hin.
Durchaus getrieben durch den Erfolg von Flutter und dessen sehr schlankem MVU Ansatz.

Klar gibt es x Nuget-Packages dafür, oder das interne MessageCenter bei Xamarin, aber das "fühlt sich nicht richtig an".

Der Xamarin-Ansatz is >10 Jahre alt, und technologisch gibts halt effizienteres mittlerweile.
Apps wie WinForms oder WPF haben gar kein internes Messaging - trotzdem gilt State Management/Messaging auch hier als empfohlen.