当复选框未选中或在事件上时,如何通知多个视图模型?C#WPF
在检查MainWindow(和MainWindowVM)时,会有复选框。其他窗口(但不是所有窗口)应得到通知,当前我们正在处理事件。也就是说,每个虚拟机都将订阅一个事件,无论何时发生更改,我们都将在所有虚拟机中处理它,有没有更好的方法 有没有更好的办法 使用一个或一个 这消除了发布者和订阅者之间的紧密耦合。事件的订阅者观察事件聚合器而不是发布者,发布者只知道事件聚合器,而不知道不同的订阅者当复选框未选中或在事件上时,如何通知多个视图模型?C#WPF,c#,wpf,mvvm,C#,Wpf,Mvvm,在检查MainWindow(和MainWindowVM)时,会有复选框。其他窗口(但不是所有窗口)应得到通知,当前我们正在处理事件。也就是说,每个虚拟机都将订阅一个事件,无论何时发生更改,我们都将在所有虚拟机中处理它,有没有更好的方法 有没有更好的办法 使用一个或一个 这消除了发布者和订阅者之间的紧密耦合。事件的订阅者观察事件聚合器而不是发布者,发布者只知道事件聚合器,而不知道不同的订阅者 这导致代码更易于维护。有关更多信息,请参阅链接。您可以使用现有资源,因此请订阅VM for MainWin
这导致代码更易于维护。有关更多信息,请参阅链接。您可以使用现有资源,因此请订阅VM for MainWindow的PropertyChanged:
public class NonMainWindowVM : INotifyPropertyChanged
{
public NonMainWindowVM(MainWindowVM mwVM)
{
mwVM.PropertyChanged += MW_PropertyChanged;
}
private void MW_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case nameof(MainWindowVM.ID):
//logic MainWindowVM.ID changed
break;
default:
break;
}
}
}
我建议您使用自定义事件还是PropertyChanged?@Rekshino自定义事件。这是一个选项:VM.PropertyChanged+=?