Maison >développement back-end >C++ >Pourquoi le rappel PropertyChanged de ma propriété de dépendance WPF ne se déclenche-t-il pas dans le concepteur ?
Le problème du rappel invalide de la propriété de dépendance PropertyChanged dans le concepteur WPF
Dans WPF, lorsqu'une propriété dépendante (telle que IsClosed) définit sa valeur au moment de l'exécution, son rappel OnPropertyChanged correspondant est appelé avec succès. Cependant, lorsque la valeur de la propriété est modifiée via le concepteur dans XAML, ce rappel ne sera pas déclenché, ce qui empêchera toute logique associée de prendre effet.
La cause première réside dans l'optimisation du processus de chargement XAML, qui utilise directement la méthode SetValue du système de propriétés, en contournant le wrapper de propriétés. Cela garantit l'efficacité du calcul, mais nécessite également des méthodes alternatives pour les modifications hors exécution.
Pour résoudre ce problème, vous devez enregistrer un PropertyChangedCallback dans les métadonnées de la propriété :
<code class="language-csharp">public static readonly DependencyProperty IsClosedProperty = DependencyProperty.Register( "IsClosed", typeof(bool), typeof(GroupBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender, (o, e) => ((GroupBox)o).OnIsClosedChanged()));</code>
En attachant ce rappel, la méthode OnIsClosedChanged() s'exécutera comme prévu, que la propriété IsClosed ait été modifiée via XAML ou du code.
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!