Wie setzen viewmodel-Eigenschaft von code-behind mit Viewmodel-ersten?
In meinem WPF (4.0) Anwendung bin ich mit Viewmodel-first
Muster. Daher meine viewmodels sind zuerst erschaffen, dann die Aussicht - mit Daten Vorlagen. Eine funktionierende demo finden Sie hier.
Nun, innerhalb der erstellten Ansichten (code-behind), brauche ich zum ändern einer Eigenschaft im viewmodel. In einem View-first
Ansatz, ich würde einfach Zugriff auf eine benannte viewmodel-Instanz. Jedoch, die Viewmodel-first
Ansatz erlaubt dies nicht. Es ist ein viewmodel, aber die Aussicht ist es egal, was es ist.
SCHLECHT:
Sicher, dass Sie bekommen können, die DataContext
und verwenden Sie es, aber Paare, die effektiv die Sicht und t
das viewmodel.
private void MyView_Loaded(object sender, RoutedEventArgs e)
{
this.viewModel = DataContext as MyViewModel;
}
Gibt es eine empfohlene Muster für diese. Befehle? Nachrichten? Bitte um Hilfe!!
Q: Wie ändere ich (eine Immobilie) die aktive viewmodel?
- "Ich brauche zum ändern einer Eigenschaft im viewmodel" => die Meisten wahrscheinlich, dass diese Annahme falsch ist, und es ist ein architektonisch bevorzugte Art und Weise der Erreichung der gewünschten Wirkung. Was genau ist das Wirkung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Bindungen zum übergeben von Daten aus der Ansicht zu ViewModel und Befehle, um aktiv das ViewModel.
Befehle verwenden sollten, eine Bindung zu einer Ausführung eines Befehls auf das ViewModel.
Nachrichten verwendet werden sollte, um die Kommunikation zwischen ViewModels.
.
XAML
ich so etwas tun? `<local:MyView SomeProperty="{Binding SomeProperty}" />DependencyProperty
?Können Sie nicht tun. Sonst Blick wird bewusst über ein View-Modell.
Wenn diese Initialisierung ist Häufig über alle Modelle ansehen, dann definieren Sie die Eigenschaften/Ereignisse in
ViewModelBase
und leiten Sie alle anzeigen von Modellen aus dieser Klasse.Müssen Sie EventAggregator Muster für View-ViewModel-Kommunikation.
Können Sie Ihre Lieblings -MVVM framework, und fast alle framework-Unterstützung
EventAggregator
(oderMessageBus
oderEnterprise Bus
).EventAggregator
Muster (aus der Ansicht) Abfrage von Daten aus dem viewmodel? Ich habe ein paar Szenarien, wo muss ich viewmodel-Abfragen aus dem code-behind -: (