如何将值绑定到其父元素值?

时间:2009-12-08 18:38:38

标签: silverlight-3.0

Silverlight为元素绑定提供元素。如何应用这种情况:

我有一个xaml如下:

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

我想将MyControl Title绑定到与其父Textblock Text相同的数据,但我不希望为其父Textblock设置x:Name。

我知道有一种方法可以将Title绑定到同一个数据源:

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

这可能导致两次调用“{Binding ABC}”,在我的情况下,ValurConverter用于此绑定。我不想这样使用。

1 个答案:

答案 0 :(得分:0)

通过指定相对来源尝试绑定:

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

这应该绑定到MyControl之前的第一个“TextBlock”类型。

更新:FindAncestor RelativeSource目前(截至2009年12月8日)仅适用于WPF,而非Silverlight。

但是有一个请求打开(8/3/2009)Silverlight团队将FindAncestor带入Silverlight的未来版本:Link

微软关于这个主题的说法:

  

我们目前正在审核您提交的问题。如果此问题紧急,请直接与支持部门联系(http://support.microsoft.com)(2009年8月4日)


目前,您可能拥有最佳选项:Link

如图所示,您可以将MyControl包含在TextBox模板中。然后,您可以使用以下代码绑定标题:

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

希望这有帮助。