【问题标题】:Using MVVM to Change an Applications Theme使用 MVVM 更改应用程序主题
【发布时间】:2013-01-22 07:30:58
【问题描述】:

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

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

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

【问题讨论】:

  • 您使用代码隐藏来执行此操作,就像任何其他 WPF 应用程序一样。 MVVM != 没有代码隐藏。无论如何,您的 ViewModel 不应该与主题有太多关系。那是用户界面。

标签: c# wpf mvvm themes


【解决方案1】:

拥有 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);
   }
}

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

【讨论】:

  • 非常感谢您的光临。我对商业开发相对较新,对 WPF 是全新的;这有很大帮助。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
相关资源
最近更新 更多