Maison > développement back-end > C++ > Comment appeler les fonctions du modèle de vue parent à partir des modèles de vue enfant dans WPF ?

Comment appeler les fonctions du modèle de vue parent à partir des modèles de vue enfant dans WPF ?

Mary-Kate Olsen
Libérer: 2024-12-26 05:51:21
original
598 Les gens l'ont consulté

How to Call Parent View Model Functions from Child View Models in WPF?

Comment exécuter des fonctions dans le modèle de vue parent à partir de modèles de vue enfants

Votre application se compose d'un TreeView, de deux contentPresenters et d'une vue séparée modèles pour chaque élément de l’interface utilisateur, y compris la fenêtre principale. Pour mettre à jour l'affichage, vous cherchez à invoquer une méthode dans le MainWindowViewModel à partir du TreeViewViewModel.

Comme des cas similaires, une solution viable implique l'utilisation d'objets délégués. Consultez la réponse précédente du forum intitulée « Passage de paramètres entre les modèles de vue » pour une explication détaillée et une mise en œuvre pratique. Remplacez simplement les délégués dans cet exemple par les méthodes souhaitées, et ils fonctionneront de la même manière.


Mettre à jour

Pour appeler directement les méthodes au lieu de transmettre des paramètres, considérez le gestionnaire de délégué modifié ci-dessous :

public void ParameterViewModel_OnParameterChange(string parameter)
{
    // Call your method here
}
Copier après la connexion

Ce délégué sert de chemin vers le modèle de vue parent, permettant fonctionnalité de type événement (« ReadyForYouToCallMethodNow »). Alternativement, vous pouvez définir le délégué sans aucun paramètre d'entrée :

public delegate void ReadyForUpdate();

public ReadyForUpdate OnReadyForUpdate { get; set; }
Copier après la connexion

Dans le modèle de vue parent, après avoir attaché le gestionnaire comme illustré dans l'exemple précédent, vous pouvez appeler la méthode :

public void ChildViewModel_OnReadyForUpdate()
{
    // Call your method here
    UpdateDisplay();
}
Copier après la connexion

Si plusieurs modèles de vues enfants sont impliqués, vous pouvez définir le délégué dans une classe distincte accessible à tous modèles.


Mise à jour 2

Après une analyse plus approfondie, une approche plus simple peut suffire. Vous pouvez directement lier des éléments de vue enfant aux propriétés du modèle de vue parent. Par exemple, l'extrait de code suivant dans votre TreeViewView lie la propriété Button.Command à une propriété ICommand dans MainWindowViewModel :

<Button Content="Click Me" Command="{Binding DataContext.ParentCommand, 
RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
Copier après la connexion

Cela suppose que l'instance du modèle de vue parent est 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal