首页 文章

Xaml找不到绑定

提问于
浏览
1

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

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

我的问题是:如何告诉Button查找其绑定"at a higher level"而不是Observable Collection ie:转到视图模型,而不是直接父级(Observable Collection) . 您无法在 ChildControl 中为按钮设置 DataContext ,因为对视图模型的引用不存在 . 它在父母身上 .

3 回答

  • 1

    试试这个:-

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

  • 0

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

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

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

相关问题