UserControl菜单上的多级数据绑定相互依赖
我有一个属性Tours
:
-
Tours
是一个ObservableCollection
类的Tour
- 每个“Tour”都有一个
Partie
类的ObservableCollection
Parties
- 每个
Partie
都有一个Equipes
类Equipe
- 每个
- 每个“Tour”都有一个
我有3个菜单:
- 首先是与物业
Tours
- 第二个必须与第一个菜单的
SelectedItem
属性绑定(因此它具有类Partie
的ObservableCollection
) - 第三个必须与第二个菜单的
SelectedItem
属性绑定。 (所以它有一个类Equipes
的ObservableCollection
)
现在,这是工作代码:
然后我可以根据菜单的SelectedItem
更改上下文的视图:
我的问题是如果我的菜单变成Usercontrol
,我似乎无法在lvMenu
的菜单和ListView
(我命名为: lvMenu
)之间进行databinding
。 我虽然这样做很简单:
然后可以以相同的方式访问上下文:
...
lvMenu
( ListView
)将其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; } }
主要优点是此代码是可测试和可扩展的。
希望这可以帮助。