2012-04-12 8 views
0

Ich habe den Navigationsdienst von WPF implementiert, um von einer Ansicht zu einer anderen zu navigieren. Ich benutze dafür den ViewModelLocator, der dafür verantwortlich ist, jedes Mal, wenn er den richtigen "Galasoft Messenger" erhält, von einer Ansicht zur nächsten zu navigieren.MVVM Light - Welches ist die aktuelle Ansicht?

In Ordnung.

Jetzt, da ich viele Views-ViewModels-Paare habe, habe ich beschlossen, in einigen Ansichten ein Benutzersteuerelement zu erstellen, das freigegeben ist (in XAML enthalten). Dieses UserControl verfügt über ein eigenes ViewModel und einige Eigenschaften, um das Aussehen abhängig von der Ansicht zu bestimmen.

Wie kann ich auf die Eigenschaft des ViewModel des Benutzersteuerelements von der Ansicht aus zugreifen, die gerade angezeigt wird (das hat in der Benutzersteuerung)?

Und mehr, wie (und wo) kann ich die aktuell angezeigte Ansicht bestimmen?

Ich kann einige Code schreiben, um bei Bedarf zu helfen, aber ich denke, die Antwort kurz und einfach ist, aber ich irgendwie verpasst etwas ...

Danke.

L

Antwort

0

Wenn ich Benutzersteuer Host, wo ich Zugriff auf die Ansicht Modell möchte ich verwenden in der Regel eine Contentcontrol in ein Databound Datatemplate wie this in Antwort verhakt. Wenn Sie Ansichten wechseln mussten, die das Ansichtsmodell verwendet, könnten Sie einen Trigger wie in this antwort verwenden.

Mit diesem Setup können Sie alle Eigenschaften festlegen, die Sie für das Ansichtsmodell des Benutzersteuerelements benötigen, sowie wissen, welche Ansicht das Benutzersteuerelement verwendet.

+0

Ok, aber die Benutzersteuerung auf diese Weise braucht kein eigenes Viewmodel, habe ich recht? In Ihrem Szenario könnten Sie mehrere Ansichten für dasselbe viewModel haben ... – zero51

+0

Dieses Setup würde mehreren Sichten erlauben, das gleiche Ansichtsmodell zu haben. Wenn Sie mehrere Seiten haben, würde jede Seite normalerweise ihr eigenes Ansichtsmodell haben und das Benutzersteuerelement hätte ein separates Ansichtsmodell, so dass die Funktionalität des Benutzersteuerelements von den Seiten getrennt werden könnte, auf denen es gehostet wird. – Erick

Verwandte Themen