2013-02-19 80 views
14

有沒有人知道XAML綁定中FindAncestor的「新方法」是什麼?查看RelativeSourceMode(http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.data.relativesourcemode),只剩下引用self或TemplatedParent的選項。 FindAncestor消失了。我想知道爲什麼以及使用FindAncestor修復的問題的典型解決方案。WinRT(Win 8)商店應用程序XAML綁定RelativeSourceMode FindAncestor丟失?

問候 Gope

+5

同意,它很難。 – Mic 2013-04-07 01:38:53

回答

14

爲什麼缺少?不知道,但我懷疑除了「微軟沒有足夠的時間來及時實現所有功能」之外,還有其他解釋。

一個簡單的解決辦法是使用的ElementName代替,如:

Binding={ ElementName=TheNameOfTheAncesor, Path=DataContext.TheViewModelProperyIWantToBindTo } 

,並添加一個X:名稱屬性,你想你的FindAncestor結合指向祖先:

<TextBlock x:Name="TheNameOfTheAncestor" /> 
+2

是的,它缺少... :) ElementName在簡單場景中工作,但如果在ControlTemplate中,則不會,因爲ElementNames對於每個模板化控件都不相同。 – Gope 2013-02-25 11:57:25

+1

這是我的第三個「微軟沒有足夠時間在兩天內實現所有功能」的問題。謝謝,先生,它對我很好。 – 2013-11-21 18:53:07

+0

如果這是XAML,我相信它應該是'{Binding ElementName = ...}'而不是'Binding = {Elementname = ...}' – dlatikay 2016-11-22 12:19:44

4

沒有針對此不缺乏通用的解決方案據我所知,例如,你不能在DataTemplate訪問ListViewItem性質,所以你不能在SEL反應優雅地改變。你應該找到每個特定案例的解決方法,直到FindAncestor將被添加(我不能相信這種缺席不僅僅是由於時間不足)

相關問題