当复选框未选中或事件时,如何通知多个视图模型?C#WPF



在MainWindow(和MainWindowVM(中检查其他窗口(但不是全部(,请通知MainWindow(和MainWindowvm(的复选框,当前我们正在处理事件。这就是每个VM都会订阅事件,每当发生更改时,我们都会在所有VM中处理它吗?

有什么更好的方法吗?

使用事件聚合器或使者。

这消除了发布者和订户之间的紧密耦合。事件的订阅者观察事件聚合器,而不是发布者,并且发布者仅知道事件聚合器,而不是对不同的订阅者的了解。

这导致代码更容易维护。请参阅链接以获取更多信息。

您可以使用,您已经拥有的东西,因此请订阅MainWindow的VM属性:

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;
        }
    }
}

最新更新