2010-04-30 9 views
5

Was ist der beste Ansatz für die Navigation zwischen UserControls/Pages (außerhalb der Browser-Erfahrung)? Ich bin ziemlich neu in Silverlight und noch neuer zu dem MVVM-Muster.Silverlight Navigation mit Mvvm-Licht (oobe) + MEF?

Wie gut ist das Navigations-Framework in das MVVM Light Toolkit integriert? Ein Ausschnitt für die allgemeine Anwendungsflusskontrolle mit den beiden wäre toll.

Der Plan bestand darin, das Navigation Framework für den allgemeinen Fluss zu verwenden oder den Ansatz von Jeremy Lieness für die Verwaltung der Region zu verwenden (http://csharperimage.jeremylikness.com/search/label/regions) und die Regionen bei Bedarf auszuwechseln. Ich habe ein paar Stellen erwähnt, die die Visual Root ersetzen, aber das klang wie ein Hack für mich.

Alle Ratschläge, Schnipsel oder ein Anstupsen in der allgemeinen Richtung würden sehr geschätzt werden.

Vielen Dank.

+0

viel Glück: P Navigation API ain 't MVVM freundlich überhaupt:/ – vidalsasoon

Antwort

0

Ich kämpfe mit der gleichen Sache, aber ich bin irgendwie weg von der "NavigationService" gelenkt, weil angeblich das Journal die Objektreferenz im Speicher behält oder etwas, was ich irgendwo gelesen habe.

Ich habe versucht, einen Rahmen im Hauptfenster zu verwenden, und mit mvvm Licht Navigationsnachrichten an das Fenster senden, um den Rahmen zu ändern.

Edit: Ich habe es herausgefunden.

im Hauptfenster (Code hinter, nicht Ansichtsmodell) Ich habe eine Messenger.Default.Register (Of NotificationMessage (Of NavMsg)) ...

dann in einer beliebigen Ansicht Modell, das ich tun, um eine Messenger .Default.Send (Of Notificationmessage (Of NavMsg)) ...

Und dann habe ich eine NavMsg-Klasse erstellt, die eine Zeichenfolge uri oder ein Objekt zu navigieren akzeptiert.

Hier sind einige T4-Code-Vorlagen, um den Code für Ihre Ansicht/ViewModel mit mvvmlight zu arbeiten, und es zeigte die oben genannten Schließen Fenster Nachricht. http://dl.activeaspsoftware.net/dl.aspx?f=MvvmLightCodeTemplates.zip

+0

Hervorragend Ich hoffe, dass ich heute oder morgen etwas abschneide um einen Blick darauf zu werfen. By the way nice multi-touch tisch :) –