2009-12-08 65 views
0

Silverlight提供元素绑定的元素。如何应用它,这是情况:如何将值绑定到其父元素值?

我有如下一个XAML:

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

我想MyControl标题绑定到相同的数据,其母公司文本块文本,但我不想集合X :其父文本块的名称。

我知道有绑定所有权同一数据源的一个解决办法:有ValurConverter

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

这可能会导致两次调用“{结合ABC}”,与我的情况下,这种结合。我不想用这种方式。

回答

0

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

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

这应绑定到前述MyControl第一“的TextBlock”型。

UPDATE:FindAncestor RelativeSource当前(截至2009年12月8日)只适用于WPF,不适用于Silverlight。

但与Silverlight团队带来FindAncestor于Silverlight的未来版本中开放的要求(2009年8月3日):Link

微软在这个问题上的字:

We are currently reviewing the issue you have submitted. If this issue is urgent, please contact support directly(http://support.microsoft.com) (8/4/2009)


目前最好的选择你可能有这里列出:Link

如上所示,你可以把你的MyControl一个文本框模板。然后你可以绑定标题使用下面的代码:

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

希望这会有所帮助。

+0

我只是在发布之前测试了同样的东西,奇怪的是它不起作用 - 就像工具提示不是文本块的后代一样。 – Andrew 2009-12-08 19:00:52

+0

谢谢。以上语法给我出现以下错误: 属性'AncestorType'不存在于XML名称空间'http://schemas.microsoft.com/winfx/2006/xaml/presentation'中的'RelativeSource'类型上。 \t XML名称空间'http://schemas.microsoft.com/winfx/2006/xaml'中不存在标签'Type'。 – KentZhou 2009-12-08 19:04:55

+0

您是否正在WP7 Silverlight上试用此XAML? – Gineer 2012-04-24 15:38:54

相关问题