2009-06-28 5 views
2

Ich habe eine Anwendung, die eine ähnliche Schnittstelle zu Visual Studio hat, in der es eine Liste von Dokumenten gibt, die geöffnet, bearbeitet und gespeichert werden können. Jedes Dokument kann verschiedene Typen haben und verschiedene Editoren haben.MVVM Design für Multi-Dokument-App?

Ich habe auch eine allgemeine Speichern MenuItem. Ich möchte nur den Befehl Speichern verwenden, um das aktive Dokument zu speichern. Gibt es ein Standardmuster mit MVVM zum Verbinden der Dokumente VM mit dem Speichern MenuItem?

Antwort

1

Ich weiß nicht, über eine Standardmethode, aber ich würde etwas wie das folgende versuchen:

  1. eine Schnittstelle erstellen, die einen Stub für Ihren Savedocument-Befehl hat.
  2. Lassen Sie das ViewModel Ihres Dokuments diese Schnittstelle implementieren.
  3. Ihre Hauptanwendung mit der Liste der aktuellen Dokumente enthält eine Eigenschaft, die das Viewmodel-Dokument zurückgibt, auf das sich der Benutzer gerade konzentriert. Nennen Sie es CurrentDocument um der Sache willen. Lassen Sie WPF-Datenbindung dies festlegen, wenn sie von Dokument zu Dokument wechseln.
  4. Lassen Sie Ihren Speicherbefehl die CurrentDocument-Eigenschaft verwenden, um das Dokument abzurufen. Überprüfen Sie, dass es nicht null ist, und implementieren Sie die entsprechende Schnittstelle. Wenn alle Prüfungen bestanden sind, rufen Sie den SaveDocument-Befehl für das ViewModel-Dokument auf.
+0

Ja. Das habe ich getan, seit ich keine Antwort bekommen habe. +1 –

+0

Der einzige Unterschied besteht darin, dass die Menüs viewmodel über einen Speicherbefehl verfügt, an den ich binden kann. Wenn kein savable-Dokument geöffnet ist, wird der Standardspeicherbefehl verwendet (was nichts bewirkt). Wenn das Dokument geändert wird, setze ich den Menübefehl viewmodel zum Befehl savable documents oder zum Standardwert. –