如何绑定父元素的属性

时间:2010-11-17 09:16:51

标签: wpf silverlight binding

我有一个关于Silverlight的快速绑定问题。 我有一些扩展器,想要覆盖他们的标题模板

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

在标题模板中,我有一个文本框,想要将文本绑定到扩展器的标头。

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

我尝试了一些使用RelativeSource(Self和TemplatedParent)的东西,但似乎没有任何效果。 有些想法很棒,谢谢。

4 个答案:

答案 0 :(得分:1)

查看RelativeSourceMode.FindAncestor

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

答案 1 :(得分:1)

你试过了吗?

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

答案 2 :(得分:1)

就这样做

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

答案 3 :(得分:1)

感谢您的快速解答。 FindAncestor似乎无法在Silverlight下以WPF中的方式工作(无法解析AncestorType ..) 但是{Binding}或{Binding。}可以做到这一点!