[英]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
屬性更改設置,您的方法將起作用。 唯一的問題是您的ViewModel
與System.Configuration.ApplicationSettingsBase
類緊密耦合。
我將創建一個Wrapper類來實現一個接口(比如IConfigProvider ),它將所有設置公開為Properties和Save方法,並將其注入到ViewModel
。 這樣,您可以在單元測試ViewModel
時傳遞mock \\ stub。
另一個好處是,如果您決定更改存儲配置值的方式(比如想要在數據庫中存儲某些設置),則無需觸摸ViewModels
因為所有工作都在ConfigProvider
類中完成。
有一種更簡單的方法......“方式”是相同的,但不是為每個屬性添加設置,只需創建一個包含所有屬性的Settings
類...將它們聲明為普通屬性並實現通常的INotifyPropertyChanged
接口。 然后 ,這就是差異,只為這個類創建一個設置。 這樣,維護起來就容易多了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.