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用于此绑定。我不想这样使用。
答案 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}
希望这有帮助。