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 ?
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.
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.
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) }
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!