2

J'ai un contrôle personnalisé dans Silverlight, le changement de propriété via la fenêtre de propriétés n'est pas mis à jour jusqu'à ce que je construise à nouveau l'application. Quel pourrait être le problème?Blend - Les PropertyChanges ne sont pas mis à jour

Dites par exemple. J'ai un contrôle appelé Formes. Si je choisis le type de la forme comme "Octane" il devrait montrer un exemple d'octane dans la surface de conception de temps de mélange.

Mais, dans mon cas, il ne se passe pas, le concepteur de fusion n'est pas mis à jour jusqu'à ce que je construise à nouveau l'application. Merci de me conseiller à ce sujet. Je ne veux pas mettre le consommateur en difficulté en lui permettant de le construire pour chaque changement de la valeur de la propriété qu'ils font.

Remarque: Toutes les propriétés exposées dans le contrôle sont des propriétés de dépendance.

+1

Êtes-vous en mesure de fournir du code XAML et du code? Plus vous fournissez, plus il est facile de déboguer. –

+0

@HiTech Magic J'ai trouvé quel était le problème. J'ai mis à jour la réponse ci-dessous. Vérifiez s'il vous plaît. Merci pour votre aide :) –

Répondre

0

Ce que j'avais été une des propriétés de type CommonStyles pour appliquer des styles. Par exemple,

CommonStyles contient volonté fond comme de dp, premier plan, épaisseur, etc.,

L'erreur que je fait est, je directement affecté les valeurs comme ci-dessous. Dans la classe de base. [ShapeStyle est un dp de type CommonStyle]

//// Both properties are dp's but, assigned them like normal property. This caused the issue 
ShapeBase.Background = this.Shape.ShapeStyle.Background; 
ShapeBase.Foreground = this.Shape.ShapeStyle.Foreground; 

ShapeFace.Background = this.Shape.ShapeFaceStyle.Background; 
... 

Quand je change la propriété d'arrière-plan, il ne sera pas à jour ma propriété ShapeBase.Background. Depuis, ce n'est pas une dépendance liée. Je l'ai résolu par, liaison dp. Comme ci-dessous.

this.ShapeBase.SetBinding(BackgroundProperty, 
       new Binding() { 
       Source = this.Shape.ShapeStyle, 
       Path = new PropertyPath("Background") }); 
1

Avez-vous implémenté le setter de votre propriété afin que les contrôles soient mis à jour lorsque la valeur de la propriété est modifiée?

(BTW, juste parce que je suis curieux, ce qui est une forme d'octane? T-il quelque chose à voir avec la chimie?)

+0

vc74, ouais j'utilise dp. Le problème est que le changement de propriété n'est pas mis à jour même pour le setter du dp, le callback de la propriété modifiée n'est pas déclenché. Mais, quand je construis l'application (Ctrl + Maj + B), elle est mise à jour et appliquée. –

+0

Note supplémentaire: Aussi, la méthode surchargée de OnPropertyChanged n'est pas disponible dans silverlight, donc je suis incapable de mettre à jour manuellement la mise en page aussi :( –

+0

Ouais, il s'agit de la chimie Merci pour l'aide. ça m'a aidé à regarder encore et encore les setters pour aider à réduire le problème, donc, vous assigner la prime. :) –

Questions connexes