Xaml找不到绑定

时间:2011-05-20 16:21:13

标签: silverlight silverlight-4.0 mvvm

我有一个包含三个子UserControl的页面。我在父页面中设置了DataContext viewmodel资源,并且三个子控件引用了父DataContext,因为所有3个子用户控件都使用相同的ViewModel。一切都好。

然而,其中一个UserControl存在绑定问题(我可以看到这是因为Silverlight 5 Beta中的新XAML调试功能。)有问题的UserControl是ItemsControl。每个项目内部都有一个按钮和2个文本框。该按钮绑定到Command。错误是Button无法找到其绑定。 2个文本框正确绑定。 ItemsControl的ItemSource绑定到viewmodel中的ObservableCollection。

我的问题是这样的:我如何告诉Button寻找比“Observable Collection”更高级别的绑定,即:转到视图模型,而不是直接父级(Observable Collection)。您无法在DataContext中为按钮设置ChildControl,因为对视图模型的引用不存在。它在父母身上。

3 个答案:

答案 0 :(得分:1)

试试这个: -

为您的ItemsControl命名。在包含ElementName=NameOfItemsControl的按钮绑定中,使用DataContext.作为绑定路径的前缀。

答案 1 :(得分:0)

您应该能够使用RelativeSource绑定来访问您的viewmodel

{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, 
         Path=DataContext.MyButtonCommand}

答案 2 :(得分:0)

此后我将所有SL5项目都移回SL4。 SL5的新XAML调试功能工作时间不超过几天,现在已经永久性地削弱了无法找到PDB的错误。我建议任何开发大型项目的人都要远离SL5,直到经过测试和验证,否则你最终会浪费大量的时间来分析SL5产生的奇怪错误。