2011-08-17 3 views
3

J'écris un contrôle personnalisé. Il a une propriété de dépendance qui est fournie une valeur "par défaut" par le contrôle. Cette valeur peut changer à tout moment. Je veux pouvoir remplacer cette valeur par un style ou quoi que ce soit, mais la priorité de la propriété de dépendance imposée par WPF signifie que ma valeur par défaut locale gagne toujours.Priorité de la propriété de dépendance. Je veux que la valeur locale soit remplaçable

Y a-t-il un moyen de se reporter à d'autres sources lors de l'écriture d'un contrôle?

Répondre

2

Je pense que j'ai trouvé un moyen de contourner le problème.

J'expose maintenant deux propriétés. Un "Default" que le contrôle met à jour, et un standard. Dans mon style de contrôle par défaut, je lie le standard à celui par défaut, donc il obtient les valeurs, mais peut toujours être lié à quelque chose d'autre dans le xaml.

+1

Pour votre valeur "Default", avez-vous envisagé d'utiliser la propriété 'UnsetValue' de DependencyProperty'? http://msdn.microsoft.com/en-us/library/system.windows.dependencyproperty.unsetvalue.aspx –

+0

Voulez-vous publier une implémentation simple de votre solution, au moins en pseudocode? Je ne comprends pas comment configurer les liaisons. – Palec

3

Vous pouvez essayer d'effacer la valeur locale via DependencyObject.ClearValue(). Je ne pense pas que vous pouvez changer le order of precedence for dependency properties.

+0

Un grand merci, mais malheureusement le contrôle mettra à jour la valeur locale assez régulièrement pour que tout effacement soit rétabli. – GazTheDestroyer

+0

@GazTheDestroyer: Je pensais que ce serait le cas. Voir mon commentaire sur votre réponse concernant l'utilisation d'un "UnsetValue" pour votre propriété de dépendance. –

+0

Vous ne savez pas si vous voulez dire non défini ou clair. Clear sera remplacé par ma valeur locale, et unset semble être statique, donc pas bon pour mes valeurs de contrôle d'instance? – GazTheDestroyer

Questions connexes