0

当我读到这一行时:

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

1 回答 1

1

我喜欢他们在视图模型上。原因很简单,这个功能可以在单元测试工具中测试。如果他们在视图中,您将不得不跳过更多的箍来对其进行测试。在我看来,视图模型应该包含大部分表示逻辑。颜色及其与某些应用程序状态的关系属于该代码类别。

于 2013-09-24T22:40:25.457 回答