簡體   English   中英

當復選框未選中或發生事件時,如何通知多個視圖模型? C# WPF

[英]How to notify more than one View models when checkbox is unchecked or on an event? C# WPF

MainWindow(和 MainWindowVM)中有復選框檢查它應該通知其他窗口(但不是全部),當前我們正在通過處理事件來做。 也就是說,每個 VM 都會訂閱一個事件,每當發生變化時,我們都會在所有 VM 中處理它,有沒有更好的方法來做到這一點?

有沒有更好的方法呢?

使用事件聚合器信使

這消除了發布者和訂閱者之間的緊密耦合。 事件的訂閱者觀察事件聚合器而不是發布者,發布者只知道事件聚合器而不知道不同的訂閱者。

這導致代碼更容易維護。 請參閱鏈接以獲取更多信息。

你可以使用你已經擁有的東西,所以為 MainWindow 訂閱 VM 的 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;
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM