Innerhalb eines vielschichtigen Programms, das aus mehreren Ansichtsmodellen besteht, kann es oft notwendig sein, bestimmte Funktionen innerhalb des Hauptansichtsmodells auszuführen Hauptansichtsmodell von anderen untergeordneten Ansichtsmodellen. Stellen Sie sich ein Szenario vor, in dem das Hauptansichtsmodell die Anzeige von Inhalten innerhalb von Inhaltspräsentatoren verwaltet und die Anforderung entsteht, diese Anzeige manuell von einem untergeordneten Ansichtsmodell aus zu aktualisieren.
Um diese Kommunikationslücke zu schließen Erwägen Sie die Einbindung von Delegatenobjekten. Diese Delegaten stellen im Wesentlichen einen Pfad zurück zum übergeordneten Ansichtsmodell her und bieten die Möglichkeit, „ein Ereignis auszulösen“, das angibt, dass eine Methode aufgerufen werden muss.
Zum Aufrufen einer bestimmten Methode Verwenden Sie für die Methode im übergeordneten Ansichtsmodell die folgende Delegatensyntax:
public delegate void ReadyForUpdate();
Innerhalb der untergeordneten Ansicht Modell:
// Define a handler for the ReadyForUpdate delegate public void ParameterViewModel_OnParameterChange(string parameter) { // Here, we call the desired method UpdateDisplay(); }
Im übergeordneten Ansichtsmodell:
// Attach the handler to the delegate public ReadyForUpdate OnReadyForUpdate { get; set; } // When the delegate's event is raised (e.g., by the child calling UpdateDisplay()), // this method will be executed public void ChildViewModel_OnReadyForUpdate() { // Desired action occurs here (e.g., updating the display) }
Ein alternativer Ansatz, sofern geeignet, wäre die direkte Bindung aus den untergeordneten Ansichten zum übergeordneten Ansichtsmodell hinzufügen, wie unten dargestellt:
<!-- In TreeViewView --> <Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
Dies setzt voraus, dass eine Instanz des übergeordneten Ansichtsmodells als DataContext des festgelegt ist Hauptfenster.
Das obige ist der detaillierte Inhalt vonWie kann ich Hauptansichtsmodellfunktionen von untergeordneten Ansichtsmodellen in WPF aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!