【问题标题】:How to bind property of parent element如何绑定父元素的属性
【发布时间】:2011-05-11 07:39:05
【问题描述】:

我有一个关于 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)的东西,但似乎没有任何效果。 有些想法会很棒,谢谢。

【问题讨论】:

    标签: wpf silverlight binding


    【解决方案1】:

    看看RelativeSourceMode.FindAncestor

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

    【讨论】:

      【解决方案2】:

      就这样做

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

      【讨论】:

        【解决方案3】:

        感谢您的快速回答。 FindAncestor 似乎不像在 WPF 中那样在 Silverlight 下工作(无法解析 AncestorType..) 但是 {Binding} 或 {Binding .} 可以解决问题!

        【讨论】:

          【解决方案4】:

          你试过了吗:

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

          【讨论】:

            猜你喜欢
            • 2011-01-27
            • 2017-07-20
            • 2010-12-11
            • 1970-01-01
            • 1970-01-01
            • 2013-05-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多