Silverlight 3.0 如何将值绑定到其父元素值?
Silverlight提供了元素到元素的绑定。在这种情况下如何应用它: 我有一个xaml,如下所示: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标题绑定到与
<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?