UserControl菜单上的多级数据绑定相互依赖

在此处输入图像描述

我有一个属性Tours

  • Tours是一个ObservableCollection类的Tour
    • 每个“Tour”都有一个Partie类的ObservableCollection Parties
      • 每个Partie都有一个EquipesEquipe

我有3个菜单:

  1. 首先是与物业Tours
  2. 第二个必须与第一个菜单的SelectedItem属性绑定(因此它具有类PartieObservableCollection
  3. 第三个必须与第二个菜单的SelectedItem属性绑定。 (所以它有一个类EquipesObservableCollection

现在,这是工作代码:

      

然后我可以根据菜单的SelectedItem更改上下文的视图:

      

我的问题是如果我的菜单变成Usercontrol ,我似乎无法在lvMenu的菜单和ListView (我命名为: lvMenu )之间进行databinding 。 我虽然这样做很简单:

    

然后可以以相同的方式访问上下文:

   ... 

lvMenuListView )将其ItemsSource="{Binding}"绑定到上下文。

有没有人知道如何做到这一点? (对不起我的英语不好)

一种方法是在usercontrol中使用DependencyProperty

另一个简单的方法是

为MenuTours用户控件创建ViewModel

在MenuTours中,ListViews将selectedItem与ViewModel中的属性一起作为TwoWayBinding

现在在您的主窗口中订阅MenuToursViewModel的propertyChanged事件

 MenuToursViewModel.PropertyChanged += OnpropertyChanged; void OnPropertyChanged(Sender s, PropertyChangedEventArgs e) { if(e.PropertyName == "SelectedTour") { MenuPartiesViewModel.Items = SelectedTour.parties; } } 

主要优点是此代码是可测试和可扩展的。

希望这可以帮助。