使用 MVVM 更改应用程序主题

本文关键字:应用程序 MVVM 使用 | 更新日期: 2023-09-27 17:55:18

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

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

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

使用 MVVM 更改应用程序主题

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

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