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

Silverlight 3.0 如何将值绑定到其父元素值?,silverlight-3.0,Silverlight 3.0,Silverlight提供了元素到元素的绑定。在这种情况下如何应用它: 我有一个xaml,如下所示: <TextBlock Text="{Binding ABC}" > <ToolTipService.ToolTip> <local:MyControl Title="{Binding ...}" /> </ToolTipService.ToolTip> </TextBlock> 我想将MyControl标题绑定到与

Silverlight提供了元素到元素的绑定。在这种情况下如何应用它:

我有一个xaml,如下所示:

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

我想将MyControl标题绑定到与其父Textblock文本相同的数据,但不想为其父Textblock设置x:Name

我知道有一种解决方案可以将标题绑定到同一数据源:

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


这可能会导致两次调用“{Binding ABC}”,在我的情况下,这个绑定没有ValuerConverter。我不想使用这种方式。

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

{Binding RelativeSource={RelativeSource
FindAncestor, AncestorType={x:Type
TextBlock}}}
这应该绑定到MyControl前面的第一个“TextBlock”类型

更新:FindAncestor RelativeSource目前(截至2009年12月8日)仅在WPF中工作,而不是Silverlight

但Silverlight团队提出了一项请求(2009年8月3日),要求将FindAncestor引入Silverlight的未来版本:

微软在这方面的言论:

我们目前正在审查您提交的问题。如果此问题很紧急,请直接联系支持()(8/4/2009)


目前,这里列出了您可能拥有的最佳选项:

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

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

希望这能有所帮助。

在发布之前,我只是测试了同样的东西,奇怪的是它不起作用-就好像工具提示不是textblock的后代一样。谢谢。上面的语法给出了以下错误:XML命名空间“”中的类型“RelativeSource”上不存在属性“AncestorType”。XML命名空间“”中不存在标记“type”。是否在WP7 Silverlight上尝试此XAML?