1

所有,我是 MVVM 的新手,所以请温柔一点。我刚刚学习了如何使用 MVVM 将基本的“模型”或数据绑定到 WPF 中的视图。我现在正在着手一个新的应用程序,我想使用 MVVM 的第一件事是促进应用程序的新颜色主题的快速更改/开发。我正在尝试根据我在网上阅读的一些基本教程来做到这一点,但我对实现我想要的最佳方式感到困惑。

我见过WPF 和 MVVM - 动态更改主题,但这对我没有帮助;反而引发了更多的问题。做我想做的最好的方法是什么?以及如何使用 MVVM 实现它?

如果有人能提供一个基本的大纲,我将不胜感激。

4

1 回答 1

2

拥有 MVVM 并不意味着您将没有代码。事实上,在您的 ViewModel 中仅包含与 UI 相关的问题可能是一种代码异味。为什么不让 UI 做它的事情呢?

public interface IMainView {
   void ChangeTheme(string themeName);
}

public class ViewModel {

   public IMainView View { get; } //get the view somehow
   public ICommand ChangeThemeCommand { get; }

   private void OnChangeThemeCommandExecute(string themeName) {
      View.ChangeTheme(themeName);
   }
}

使用这种方法,您可以测试命令的调用并将其委托给视图(如果这值得测试)。您仍然有关注点分离和一些可测试性。

于 2013-01-21T23:30:58.703 回答