Frage

über an der Frage Stackoverflow Wie kann WPF-Wandler in einem MVVM Muster verwendet werden? ich habe gelernt, dass Wertwandler sollten das nicht in dem MVVM Muster verwendet werden, da die Funktionalität eines Value Converter behandelt werden sollen Ansichtsmodell selbst .

Das macht Sinn.

Aber ich erinnere mich, dass Sie sollten nicht XAML Elemente der Ansicht aussetzen, sondern nur Sammlungen von Daten freizulegen, die die Ansicht dann bindet und Displays unter Verwendung von Datatemplates.

Allerdings Wandler scheinen sehr mächtig (zB wie sie in der MVVM Template Demo finden sie in der "Messenger Sample", nachdem es), dass können sie Objekte auf Objekte , zB umwandeln Botschaftsobjekte zu Flowdocument Objekte oder Kundenobjekte in Sichtweite Objekte oder benutzerdefinierte Statusobjekte in Bilder, etc.

Wenn also ein Ansichtsmodell wird auf übernehmen die Funktion eines Value Converter , es ist zu haben, XAML-Elemente und Eigenschaften zu belichten wie Stackpanel, Sichtbarkeit, Farbe, Flowdocument, usw., richtig?

Sieht jemand einen Grund, warum ein Ansichtsmodell sollte diese reichen XAML-Objekte nicht aussetzen als Value-Wandler tun?

War es hilfreich?

Lösung

Weil dann, dass das Ansichtsmodell begrenzt verwendet, um mit einer bestimmten visuellen Darstellung nur werden. Sobald Sie das Ansichtsmodell emittierende XAML haben, bringt es Design-Inhalte in einen Domain-Entwickler. Dies bedeutet, dass der Designer Expression Blend nicht mit Design-Assets bearbeiten kann - und der Designer / Entwickler-Workflow ist gebrochen. Halten Sie die XAML auf der Seite und mit Wertwandlern mit Daten Templating hält den Entwurf vom Code getrennt.

Wenn Sie Ihr Ansichtsmodell setzt spezifische XAML es begrenzt auch, dass Ansichtsmodell nur in diesem speziellen Fall verwendet wird und macht es weniger wiederverwendbar.

Andere Tipps

Vergessen Sie nicht, dass Sie zu Datatemplates verwenden können. Ich kann einen Sinn sehen in ValueConverters aus MVVM zu halten, aber Datatemplates sind alle über Objekte in GUI zu verwandeln.

Ihre Ansichtsmodell können andere Objekte belichten (z verschachtelt Viewmodels) an die GUI und die GUI kann <DataTemplate DataType="{x:Type SubViewModel}">... verwenden, um die Objekte zu GUI abzubilden.

  

Sieht jemand einen Grund, warum ein Ansichtsmodell nicht diese reichen XAML Objekte aussetzen sollte als Value-Wandler tun?

Absolut, denn es untergräbt alle Ziele von MVVM:

  1. Sie sind nicht mehr Einheit prüfbar, zumindest nicht leicht.
  2. Sie müssen nicht mehr Trennung zwischen Logik (siehe Modell) und Präsentation (view). So können Designer und Entwickler nicht einfach zusammenarbeiten.
  3. Code-Wartung ist schwieriger, weil man die Bedenken miteinander vermischt haben.

Wenn ich einen Blick Modell sah eine Ansicht zurückkehren, würde ich nicht einmal klassifizieren es als MVVM.

Ich denke, eine Idee von mvvm / Mvc / mvp usw. ist die GUI-Code in eine Datei / Klasse zu isolieren. Wenn Sie dies tun, können Sie zu einem anderen UI ändern, ohne dass die anderen Objekte zu Umschreiben? Ich denke, wenn Sie vorbei um WPF bestimmte Objekte, die Antwort ist nein. Es ist ein Werturteil Sie für Ihre selbst machen.

Es gibt keine absolute 100% Regel, die für diese oder viele andere Konzepte funktioniert, wenn man sie ohne die Perspektive diskutieren, warum der Geist der Gemeinschaft hat sich verschoben, wie es in dieser Richtung hat. Es gibt keine ‚angenommen‘ Wahrheit oder Wissenschaft in ‚konventioneller Weisheit‘ unabhängig davon, wie neue oder überzeugend es zur Zeit ist.

Mit anderen Worten - nicht nur das Beste mit Ihrem Team, als ob IhrFormal gut, Ihr bereits gezogen immer nach unten weit mehr in der menschlichen Sorgen als alles so real wie die

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top