2009-02-03 6 views
5

Après de nombreuses recherches sur MSDN et d'autres sources, j'ai constaté que «certaines» propriétés de dépendances prennent en charge l'héritage de valeur de propriété similaire à WPF. Cependant, autant que je sache, il n'y a pas de liste définitive des propriétés, et celles qui ne le font pas. Je sais que les propriétés de police, par exemple, font; pourtant HorizontalContentAlignment ne le fait pas. J'ai également vu l'autre fil dans ce forum qui indique que la liste DP Precedence n'inclut pas l'héritage de valeur (http://msdn.microsoft.com/en-us/library/cc265148(VS.95).aspx#listing).Héritage de la valeur de la propriété

En outre, il semble qu'il ne soit même pas possible d'appliquer des métadonnées Inheritable à un point de détection personnalisé, il semble donc que le cadre Silverlight l'ait piraté pour des propriétés spécifiques. J'ai besoin de savoir exactement quelles propriétés de dépendance supportent en effet l'héritage de valeur de propriété. Si j'ai manqué un article évident sur ceci, ou un fil, alors je m'excuse mais j'ai été assez minutieux dans ma recherche.

Merci.

Répondre

4

Vous mentionnez que les propriétés de police soutiennent ce que j'ai fait creuser un peu dans le réflecteur et trouvé cela intéressant:

TextBlock

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x40003714, typeof(double)); 

contrôle

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x80003714, typeof(double)); 

Inline

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x3714, typeof(double)); 

Donc, ces trois classes définissent un FontSizeProperty et l'id utilisé ressemble beaucoup à ce premier bit qui est juste un drapeau. Donc, il se peut qu'il se passe quelque chose sous les couvertures qui permette ce que vous appelez l'héritage de propriété, car le framework pourrait transférer les valeurs entre ces id de dp similaires.

2

Voir la section "Dépendance Informations sur la propriété" du MaxHeight (qui ne hérite pas la valeur des parents) et FontSize (qui ne se propage que vous décrivez):

MaxHeight

FontSize


À partir de MSDN webpage:

Valeur de propriété Héritage

Un élément peut hériter de la valeur d'une propriété de dépendance de son parent dans l'arborescence.

Note:

comportement d'héritage Valeur de la propriété n'est pas activé globalement pour toutes les propriétés de dépendance, parce que le temps de calcul de l'héritage a un certain impact sur les performances. L'héritage de valeur de propriété est généralement activé uniquement pour les propriétés où un scénario particulier suggère que l'héritage de valeur de propriété est approprié. Vous pouvez déterminer si une propriété de dépendance hérite en consultant la section Informations sur la propriété de dépendance pour cette propriété de dépendance dans la référence du SDK.


+1

Les liens ci-dessus sont pour WPF, pas pour Silverlight. La documentation de la propriété Silverlight, par ex. pour [TextBlock.FontSize] (http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.fontsize (v = vs.95) .aspx) n'indique pas si la propriété est héritée. –

+0

Le lien pour "page Web MSDN" fait également référence exactement au même lien que MaxHeight. Copier/Coller l'erreur? – BSick7

Questions connexes