Maison > développement back-end > C++ > Pourquoi ma dépendance de la liaison de dépendance ne met-elle pas à jour le parent ViewModel?

Pourquoi ma dépendance de la liaison de dépendance ne met-elle pas à jour le parent ViewModel?

DDD
Libérer: 2025-02-01 17:21:09
original
579 Les gens l'ont consulté

Why Doesn't My DependencyProperty Binding Update the Parent ViewModel?

Dépannage des liaisons de dépendance de la prévention dans un contrôle du navigateur de fichiers

Lors de la création d'un contrôle de navigateur de fichiers personnalisé, un problème courant se pose lors de la sélection d'un fichier met à jour la zone de texte interne du contrôle mais ne propage pas la modification vers la propriété SelectedFile dans le modèle de vue parent. Cela se produit même lorsque vous utilisez une DependencyProperty et une liaison standard.

La cause profonde résulte souvent de la définition du DataContext de l'UserControl à lui-même dans son constructeur:

DataContext = this;
Copier après la connexion

Cette auto-référence DataContext remplace les DataContext hérités du parent, brisant la liaison au modèle de vue parent.

Solution: utilisation RelativeSource liaison

La solution consiste à modifier la liaison dans le XAML de UserControl pour cibler explicitement le modèle de vue parent. Utilisez RelativeSource pour traverser l'arbre visuel:

<TextBox Text="{Binding SelectedFile, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
Copier après la connexion

Cette liaison révisée garantit que la propriété SelectedFile dans le sous-allonge se lie correctement à la propriété SelectedFile du modèle de vue parent, même lorsque le DataContext de l'UserControl est défini en interne.

Maintenant, lorsque vous incorporez l'UserControl:

<FileBrowserControl SelectedFile="{Binding SelectedFile}" />
Copier après la connexion

La liaison fonctionnera comme prévu, mettant à jour la propriété SelectedFile du modèle parent

lors de la sélection de fichiers.

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal