簡體   English   中英

使用MVVM處理用戶設置

[英]Handling user settings with MVVM

目前我正在使用MVVM-light框架開發WPF應用程序。

在這一刻,我正在設置我的設置,如我的viewmodel中的下一個示例代碼所示:

private string _property

public string Property
{
    get { return _property; }
    set
    {
        if (_property != value)
        {
            _property = value;
            Settings.Default.Property = value;
            RaisePropertyChanged("Property");
        }
    }
}

我在應用程序退出時保存我的設置:

protected override void OnExit(ExitEventArgs e)
{
    Settings.Default.Save();
}

一切都按預期工作,但......

問題:這是一種正確的方法還是有更好的方法來處理MVVM中的設置

如果要根據ViewModel屬性更改設置,您的方法將起作用。 唯一的問題是您的ViewModelSystem.Configuration.ApplicationSettingsBase類緊密耦合。

我將創建一個Wrapper類來實現一個接口(比如IConfigProvider ),它將所有設置公開為Properties和Save方法,並將其注入到ViewModel 這樣,您可以在單元測試ViewModel時傳遞mock \\ stub。

另一個好處是,如果您決定更改存儲配置值的方式(比如想要在數據庫中存儲某些設置),則無需觸摸ViewModels因為所有工作都在ConfigProvider類中完成。

有一種更簡單的方法......“方式”是相同的,但不是為每個屬性添加設置,只需創建一個包含所有屬性的Settings類...將它們聲明為普通屬性並實現通常的INotifyPropertyChanged接口。 然后 ,這就是差異,只為這個類創建一個設置。 這樣,維護起來就容易多了。

暫無
暫無

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

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