2010-11-17 10 views
2

J'ai une question de liaison rapide sur Silverlight. J'ai quelques Expander et que vous souhaitez remplacer leur en-tête ModèlesComment lier la propriété de l'élément parent

<Controls:Expander Header="MyHeaderTitle" 
        HeaderTemplate="{StaticResource MyExpanderHeaderTemplate}"> 
    //Content 
</Controls:Expander> 
<Controls:Expander Header="MyNextHeaderTitle" 
         HeaderTemplate="{StaticResource MyExpanderHeaderTemplate}"> 
    //Content 
</Controls:Expander> 

Dans le modèle d'en-tête, j'ai une zone de texte et que vous voulez lier le texte à l'en-tête de l'expansion. J'ai essayé quelques trucs avec RelativeSource (Self et TemplatedParent) mais rien ne semble fonctionner. Certaines idées seraient géniales, merci.

Répondre

1

avez-vous essayé:

<DataTemplate x:Key="MyExpanderHeaderTemplate"> 
    <TextBlock Text="{Binding .}"> 
     // some triggering stuff 
    </TextBlock> 
</DataTemplate> 
1

Jetez un oeil à RelativeSourceMode.FindAncestor

<TextBlock 
    Text="{Binding RelativeSource={RelativeSource RelativeSourceMode=FindAncestor, AncestorType={x:Type Controls:Expander}}}, Path=Header"/> 
1

Il suffit de faire ce

<DataTemplate x:Key="MyExpanderHeaderTemplate"> 
    <TextBlock Text="{Binding}"/> 
</DataTemplate> 
1

Merci pour les réponses rapides. FindAncestor ne semble pas fonctionner sous Silverlight comme dans WPF (impossible de résoudre AncestorType ..) Mais {Binding} ou {Binding.} Font l'affaire!

Questions connexes