Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Best Practice bei ViewModels
Kriz
myCSharp.de - Member



Dabei seit:
Beiträge: 117

Themenstarter:

Best Practice bei ViewModels

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.183

beantworten | zitieren | melden

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.
Zitat
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
private Nachricht | Beiträge des Benutzers
Kriz
myCSharp.de - Member



Dabei seit:
Beiträge: 117

Themenstarter:

beantworten | zitieren | melden

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".
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.183

beantworten | zitieren | melden

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.
Zitat
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.
private Nachricht | Beiträge des Benutzers