2016-06-19 2 views
0

Selon MSDN, l'héritage de valeur de propriété permet aux éléments enfants dans un arbre d'éléments d'obtenir la valeur d'une propriété particulière des éléments parents, héritant cette valeur comme il a été défini n'importe où dans l'élément parent le plus proche.Comment fonctionne l'héritage de valeur de propriété dans WPF?

S'il vous plaît trouverez ci-dessous l'exemple de l'échantillon

<Grid Width="300" > 
       <Border BorderThickness="1"> 
       <StackPanel Width="200" Height="200" Background="AliceBlue"> 
        <TextBlock /> 
       </StackPanel> 
       </Border> 
      </Grid> 

J'ai 2 questions sur l'exemple mentionné ci-dessus,

  1. L'arrière-plan de TextBlock n'est pas réglé au niveau de textblock mais il obtient la valeur de la société mère Stackpanel. De même, il prend une largeur de 200 à partir de la pile, mais la hauteur n'est pas fixée à 200, pourquoi?

  2. Comme la propriété TextBlock n'est pas définie, sera-t-elle recherchée par ses parents comme Stackpanel, Border, Grid? Je ne trouve pas de mécanisme pour définir la valeur de la propriété Text au niveau du Panel.

Répondre

0

La valeur de la propriété dépendance priorité est well documented.

1) La taille des contrôles n'est pas héritée, elle est measured selon la taille des parents (taille disponible) et la taille désirée pour afficher le contenu.

2) Pour cela, vous devez utiliser l'option FrameworkPropertyMetadata.Inherits dans la déclaration de propriété jointe. En outre, seul joint DP peut avoir la valeur héritée:

Bien que l'héritage de valeur de propriété peut sembler fonctionner pour les propriétés de dépendance nonattached, le comportement de l'héritage d'une propriété nonattached par certaines divisions objet d'objet dans l'arborescence d'exécution est défini. Utilisez toujours RegisterAttached pour enregistrer les propriétés dans lesquelles vous spécifiez Hérites dans les métadonnées.

+0

Quelles sont les propriétés héritées. Est-ce seulement la taille qui n'est pas héritée? – sdhok

+0

Si vous regardez une liste exhaustive des propriétés ci-jointes, je ne serai pas en mesure de fournir – nkoniishvt

+0

Merci pour la réponse. Même les propriétés d'arrière-plan ne sont pas héritées, Toutes les propriétés affichées après la saisie de TextBlock. [PropertyName] dans statckpanel sont héritées. – sdhok