当我读到这一行时:
viewmodel不仅公开模型,还公开其他属性(例如状态信息,如“忙”指示符)和命令。
http://www.codeproject.com/Articles/100175/Model-View-ViewModel-MVVM-Explained
我想知道视图上的当前设置是应该被视为视图的属性还是状态的一部分并放在视图模型中。
例如,我目前有一个首选项窗口绑定到视图模型,该视图模型包含当前颜色,其中一组颜色选择器绑定到视图模型。然后,如果单击“确定”或“取消”,命令将取消更改并重新应用旧设置。
当前颜色应该是视图上的属性,还是当前位置好?
public class PreferencesWindowViewModel:DependencyObject
{
private DelegateCommand updatePreferencesCommand;
public ICommand UpdatePreferencesCommand
{
get { return updatePreferencesCommand; }
}
private DelegateCommand cancelCommand;
public ICommand CancelCommand
{
get { return cancelCommand; }
}
public Color HighValuePenColor
{
get { return (Color)GetValue(HighValuePenColorProperty); }
set
{
SetValue(HighValuePenColorProperty, value);
}
}
答案 0 :(得分:1)
我喜欢他们在视图模型上。原因很简单,这个功能在单元测试工具中是可测试的。如果他们在视图中,你将不得不跳过更多的箍来测试它。在我看来,视图模型应该包含大多数表示逻辑。颜色及其与某些应用程序状态的关系属于该类别的代码。