Maison >développement back-end >C++ >Comment puis-je appeler des fonctions de modèle de vue principale à partir de modèles de vue enfants dans WPF ?

Comment puis-je appeler des fonctions de modèle de vue principale à partir de modèles de vue enfants dans WPF ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-31 20:53:11883parcourir

How Can I Call Main View Model Functions from Child View Models in WPF?

Appel de fonctions dans le modèle de vue principal à partir d'autres modèles de vue

Dans un programme à multiples facettes composé de plusieurs modèles de vue, il peut souvent être nécessaire d'exécuter des fonctions spécifiques dans le modèle de vue principal à partir d’autres modèles de vue descendants. Considérons un scénario dans lequel le modèle de vue principal gère l'affichage du contenu au sein des présentateurs de contenu, et il est nécessaire de mettre à jour manuellement cet affichage à partir d'un modèle de vue enfant.

Mise en œuvre

Pour combler ce fossé de communication , envisagez d'incorporer des objets délégués. Ces délégués établissent essentiellement un chemin de retour vers le modèle de vue parent, fournissant un moyen de « déclencher un événement » indiquant qu'une méthode doit être appelée.

Invocation de méthode simple

Pour invoquer un dans le modèle de vue parent, utilisez la syntaxe déléguée suivante :

public delegate void ReadyForUpdate();

Dans le modèle de vue enfant :

// Define a handler for the ReadyForUpdate delegate
public void ParameterViewModel_OnParameterChange(string parameter)
{
    // Here, we call the desired method
    UpdateDisplay();
}

Dans le modèle de vue parent :

// 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)
}

Liaison directe

Une approche alternative, si elle est appropriée, consisterait à lier directement les vues enfants au modèle de vue parent, comme illustré ci-dessous :

<!-- In TreeViewView -->
<Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />

Cela présuppose qu'une instance du modèle de vue parent soit définie comme DataContext de MainWindow.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn