2013-02-19 79 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将被添加(我不能相信这种缺席不仅仅是由于时间不足)

相关问题