2009-12-08 78 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