2009-12-08 2 views
0

Silverlight fournit la liaison élément à élément. Comment appliquer ce cas est:Comment lier la valeur à sa valeur d'élément parent?

J'ai XAML comme ci-dessous:

<TextBlock Text="{Binding ABC}" > 
    <ToolTipService.ToolTip> 
    <local:MyControl Title="{Binding ...}" /> 
    </ToolTipService.ToolTip> 
</TextBlock> 

Je veux lier MyControl titre aux mêmes données que son parent Textblock texte, mais je ne veux pas défini x : Nom pour son bloc de texte parent.

Je sais qu'il ya une solution pour lier le titre à même source de données:

<local:MyControl Title="{Binding ABC}" /> 

Cela peut entraîner deux fois d'appeler « {Binding ABC} », avec mon cas, il ValurConverter pour cette liaison. Je ne veux pas utiliser de cette façon.

Répondre

0

Essayez liaison en spécifiant une source relative:

{Binding RelativeSource={RelativeSource 
FindAncestor, AncestorType={x:Type 
TextBlock}}} 

Cela devrait se lier au premier type "TextBlock" MyControl précédentes.

MISE À JOUR: Le FindAncestor RelativeSource actuellement (en date du 8 décembre 2009) ne fonctionne que dans WPF, PAS Silverlight.

Mais il y a une demande d'ouverture (8/3/2009) avec l'équipe Silverlight pour apporter FindAncestor dans une future version de Silverlight: Link

parole de Microsoft à ce sujet:

We are currently reviewing the issue you have submitted. If this issue is urgent, please contact support directly(http://support.microsoft.com) (8/4/2009)


Actuellement, les meilleures options que vous pouvez avoir sont énumérées ici: Link

Comme indiqué, vous pouvez joindre votre MyControl dans un modèle TextBox. Ensuite, vous pouvez lier le titre en utilisant le code suivant:

{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Text} 

Espérons que cela aide.

+0

Je testais juste la même chose avant de la poster et bizarrement ça ne marche pas - comme si l'info-bulle n'était pas un descendant du bloc de texte. – Andrew

+0

Merci. La syntaxe ci-dessus me donne l'erreur suivante: La propriété 'AncestorType' n'existe pas sur le type 'RelativeSource' dans l'espace de noms XML 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'. \t La balise 'Type' n'existe pas dans l'espace de noms XML 'http://schemas.microsoft.com/winfx/2006/xaml'. – KentZhou

+0

Essayez-vous ce XAML sur WP7 Silverlight? – Gineer

Questions connexes