16 Stimmen

MVVM oder nicht MVVM, das ist hier die Frage

Ich schreibe meine Windows Forms-basierte Anwendung neu und werde WPF verwenden. Die Anwendung stützt sich stark auf Drag-and-Drop-Techniken in einer sehr grafischen Umgebung. Sie verwendet "Design"-Berichte usw., indem sie Elemente auf ein Raster zieht, sie verschiebt, mit der rechten Maustaste Eigenheiten einstellt usw., die alle in einer Datenbank gespeichert werden. Außerdem kann der Programmablauf durch das Zeichnen von Flussdiagrammen mit Routing und Entscheidungsfindung gesteuert werden, die alle auf dem Formular gezeichnet und wiederum in einer Datenbank gespeichert werden.

Eignet sich MVVM für diese Art von Anwendung, oder versuche ich, einen runden Pflock in ein eckiges Loch zu stecken.

Ihre Gedanken sind willkommen.

24voto

Eduardo Molteni Punkte 37808

Meine Meinung ist, MVVM zu verwenden, aber nicht religiös.

Ich meine, verwenden Sie ein Modell, um Ihre Ansichten, sondern auch einige Code hinter, wenn nötig (Drag & Drop, Doppelklick). Finden Sie ein Gleichgewicht, das Ihre Entwicklung unterstützt, ohne Sie in den Wahnsinn zu treiben.

5voto

MVVM eignet sich sehr gut für WPF. Können Sie Drag-Drop mit WPF und MVVM machen? Sicher kann man das. Versuchen Sie die Suche nach "WPF Drag Drop Behavior"

3voto

Adrian Anttila Punkte 1998

Es gibt zwei wirklich gute Gründe, MVVM zu verwenden:

  1. Es hilft Ihnen bei der Erstellung von Geschäftslogik und Datenzugriffscode zu erstellen, der sich einfacher getestet werden kann
  2. Mit sehr wenig zusätzlichem Aufwand können alle sollte Ihre UX leicht zu ändern sein in Blend

Wie bereits von mehreren Postern erwähnt, kann jegliches Eventing im Zusammenhang mit der UX im Code-Behind gehandhabt werden, aber Sie sollten Daten über Ihre View-Modelle offenlegen und darauf zugreifen (lesen und schreiben), um sie einfach in Ihren Views zu binden.

Was den zusätzlichen Aufwand angeht, auf den ich mich in #2 bezogen habe, könnten Sie einfach eine statische Eigenschaft zu Ihrem App-Objekt hinzufügen, um festzustellen, ob die Anwendung läuft oder eine Ansicht in Blend geöffnet ist. Wenn die View in Blend geöffnet ist, können Sie Mock-Daten verwenden, anstatt Aufrufe zum Datenzugriff zu machen. Hier ist ein Beispielcode, der prüft, ob Blend eine View geöffnet hat:

if (Application.Current == null || Application.Current.GetType() == typeof(Application))
{
    isInDesignMode = true;
}
else
{
    isInDesignMode = false;
}

Ich hoffe, das hilft.

1voto

Manohar Punkte 273

Wenn Sie auf der Suche nach Anwendungswartung und Testbarkeit auf lange Sicht, sicher können Sie dieses Zeug mit MVVM und WPF zu tun. oder sonst nur mit WPF gehen. MMVM anfängliche Lernkurve ist sehr steil.

0voto

Moble Joseph Punkte 647

Patterns wie MVVM sollen das Leben einfacher machen. Wenn Sie also das Gefühl haben, dass das Muster Ihnen Schwierigkeiten bereitet, können Sie es jederzeit aufgeben oder etwas anderes ausprobieren. Blindlings irgendetwas zu befolgen wird Ihnen nicht helfen. Aber wie auch immer, MVVM unterstützt auch komplexe UI-Interaktionen wie Drag and Drop, ich glaube, dass Verhaltensweisen Ihnen dabei helfen können. Suchen Sie auf Google nach WPF Drag & Drop Behaviours und Sie könnten eine Menge von Tutorials und Code zu finden, um Sie auf diese zu unterstützen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X