C# MVVM SelectedItem.Property一旦更改

C# MVVM SelectedItem.Property一旦更改,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我是MVVM的新手,我被卡住了 我在主窗口中有一个列表框。列表框包含由DataTemplates显示的WhateOverviewModel类型的项。用户可以与这些项目交互,WhateOverviewModel有几个依赖属性,这些属性在交互过程中可能会更改 我的问题是: 如何(在MainWindowViewModel中)对当前所选WhateViewModel的DependencyProperties的更改做出优雅的反应。我个人会在WhateOverviewModel中实现一些事件,当列表框的Sel

我是MVVM的新手,我被卡住了

我在主窗口中有一个列表框。列表框包含由DataTemplates显示的WhateOverviewModel类型的项。用户可以与这些项目交互,WhateOverviewModel有几个依赖属性,这些属性在交互过程中可能会更改

我的问题是: 如何(在MainWindowViewModel中)对当前所选WhateViewModel的DependencyProperties的更改做出优雅的反应。我个人会在WhateOverviewModel中实现一些事件,当列表框的SelectedItem更改时,我会附加到当前所选WhateOverviewModel的事件。但我认为在MVVM中可能有一种更优雅的方法来解决这个问题

谢谢。

您应该在每个ViewModels上实现该界面。然后,当一个属性更改调用
PropertyChanged
事件时,视图将收到属性已更改的通知(只要绑定正确)。如果属性是列表或集合,请确保该列表基于

将所选WhateViewModel的属性添加到MainWindowViewModel,并将其绑定到列表框中。然后在MainWindowViewModel中,您可以连接到所选WhateViewModel的属性更改

有关更多指导,请阅读:

您应该在每个ViewModels上实现该界面。然后,当一个属性更改调用
PropertyChanged
事件时,视图将收到属性已更改的通知(只要绑定正确)。如果属性是列表或集合,请确保该列表基于

将所选WhateViewModel的属性添加到MainWindowViewModel,并将其绑定到列表框中。然后在MainWindowViewModel中,您可以连接到所选WhateViewModel的属性更改

有关更多指导,请阅读:


CurrentWhatch
作为
MainWindowViewModel
的属性,并绑定
列表框。在其上选择EdItem
属性。这样,
MainWindowViewModel
就知道所选内容何时发生更改,并且可以注册/注销它感兴趣的事件。

CurrentWhatEver
作为
MainWindowViewModel
的属性,并绑定
列表框。在其上选择EdItem
属性。通过这种方式,
MainWindowViewModel
可以知道所选事件何时发生更改,并可以注册/注销它感兴趣的事件。

viewmodel之间的通信可以通过多种方式完成

  • 信使/调解人,如一种形式
  • 类似于来自
  • 或者简单地使用harcoupling并订阅mainviewmodel中WhateViewModel中的事件
顺便问一下,你到底为什么要在Viewmodels中使用DependencyProperties?使用INotifyPropertyChanged的简单属性是可行的方法

还有一件事为什么要对所选viewmodel中的更改做出反应(或者更好地使用所选viewmodel实现您想要的更改)?如果您只想在视图中显示一些信息,只需将SelectedViewmodel绑定到它。你应该用那种方式说明你的问题

编辑


WhateOverviewModel有一个列表,该列表也绑定到一个列表框(在 数据模板),并取决于我在WhateOverview模型中选择的内容 我想在MainViewModel中显示某种类型的“配置器” JensFister1 1小时前


为什么不简单地将SelectedWhateViewModel.SelectedListEntryProperty绑定到configurator视图?你能发一些代码吗

viewmodel之间的通信可以通过多种方式完成

  • 信使/调解人,如一种形式
  • 类似于来自
  • 或者简单地使用harcoupling并订阅mainviewmodel中WhateViewModel中的事件
顺便问一下,你到底为什么要在Viewmodels中使用DependencyProperties?使用INotifyPropertyChanged的简单属性是可行的方法

还有一件事为什么要对所选viewmodel中的更改做出反应(或者更好地使用所选viewmodel实现您想要的更改)?如果您只想在视图中显示一些信息,只需将SelectedViewmodel绑定到它。你应该用那种方式说明你的问题

编辑


WhateOverviewModel有一个列表,该列表也绑定到一个列表框(在 数据模板),并取决于我在WhateOverview模型中选择的内容 我想在MainViewModel中显示某种类型的“配置器” JensFister1 1小时前


为什么不简单地将SelectedWhateViewModel.SelectedListEntryProperty绑定到configurator视图?你能发一些代码吗

您使用的是thv view first还是view modelfirst方法?为什么有一个包含ViewModels列表的列表框?通常情况下,每个视图都有一个viewModel,每个viewModel都有一个模型列表(例如),您可以在视图中将列表框绑定到这些模型。除非这是您的意思。viewmodel有一个viewmodels列表,该列表绑定到xaml中的列表框。您使用的是thv view first还是view modelfirst方法?为什么有一个包含viewmodels列表的列表框?通常情况下,每个视图都有一个viewModel,每个viewModel都有一个模型列表(例如),您可以在视图中将列表框绑定到这些模型。除非这是您的意思。viewmodel有一个viewmodels列表,它绑定到xaml中的列表框。@JensPfister1希望在MainViewModel中作出反应,而不是在View中。@JensPfister1希望在MainViewModel中作出反应,而不是在View中。这是我已经做过的。因此,除了WhateViewModel中的一个事件,没有其他解决方案可以在重要属性发生更改时发出通知?也许您可以更详细地解释WhateViewModel发生了什么以及如何发生