Heim >Backend-Entwicklung >C++ >Wie kann ich Hauptansichtsmodellfunktionen von anderen Ansichtsmodellen in WPF aufrufen?
Funktionen im Hauptansichtsmodell aus anderen Ansichtsmodellen aufrufen
In diesem Szenario haben Sie ein Programm mit einer TreeView und ContentPresentern, jeweils mit ihre eigenen Ansichtsmodelle. Das mainWindowViewModel steuert die Anzeige in den contentPresenters und Sie möchten es manuell aktualisieren.
Zugriff auf MainWindowViewModel über TreeViewViewModel
Das bereitgestellte Codefragment versucht, das MainWindowViewModel mithilfe von DataContext abzurufen , was falsch ist, da MainWindowVM nicht das TreeViewViewModel ist DataContext.
Delegate-Objekte für die Eltern-Kind-Kommunikation
Ein gängiger Ansatz ist die Verwendung von Delegate-Objekten, die eine Kommunikation in beide Richtungen zwischen übergeordneten und untergeordneten Ansichtsmodellen ermöglichen. Delegatenobjekte können für jede Eltern-Kind-Beziehung verwendet werden, nicht nur zum Übergeben von Parametern zwischen Ansichtsmodellen.
Methoden in MainWindowViewModel aufrufen
Um eine Methode in MainWindowViewModel aufzurufen TreeViewViewModel, ersetzen Sie den Delegaten in der verknüpften Antwort durch Ihre Methode. Zum Beispiel:
public void ParameterViewModel_OnParameterChange(string parameter) { // Call MainWindowViewModel method here MainWindowVM.UpdateDisplay(); }
Alternativ können Sie einen Delegaten definieren, der keine Parameter akzeptiert:
public delegate void ReadyForUpdate(); public ReadyForUpdate OnReadyForUpdate { get; set; }
Im übergeordneten Ansichtsmodell können Sie die Methode dann im untergeordneten Modell aufrufen Ansichtsmodell, wenn der Delegat aufgerufen wird:
public void ChildViewModel_OnReadyForUpdate() { UpdateDisplay(); }
Direkte Bindung an die übergeordnete Ansicht Modell
Ein weiterer einfacherer Ansatz ist die direkte Bindung von untergeordneten Ansichten an übergeordnete Ansichtsmodelle. Dadurch können Sie beispielsweise eine Button.Command-Eigenschaft in einer untergeordneten Ansicht an eine ICommand-Eigenschaft im übergeordneten Ansichtsmodell binden:
<Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
Dies setzt voraus, dass MainWindowViewModel als DataContext des MainWindow festgelegt ist.
Das obige ist der detaillierte Inhalt vonWie kann ich Hauptansichtsmodellfunktionen von anderen Ansichtsmodellen in WPF aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!