Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MVVM更改应用程序主题_C#_Wpf_Mvvm_Themes - Fatal编程技术网

C# 使用MVVM更改应用程序主题

C# 使用MVVM更改应用程序主题,c#,wpf,mvvm,themes,C#,Wpf,Mvvm,Themes,我是MVVM的新手,所以请温柔一点。我刚刚学习了如何使用MVVM将基本“模型”或数据绑定到WPF中的视图。我现在正在着手开发一个新的应用程序,我想使用MVVM的第一件事是促进应用程序新颜色主题的快速更改/开发。我试图根据我在网上读到的一些基本教程来做这件事,但是我对实现我想要的最好的方法感到困惑 我见过,但这对我没有帮助;相反,这会引发更多的问题。做我想做的事最好的方法是什么?我如何使用MVVM实现它 如果有人能提供一个基本的大纲,我将不胜感激 拥有MVVM并不意味着你就没有代码了。事实上,在V

我是MVVM的新手,所以请温柔一点。我刚刚学习了如何使用MVVM将基本“模型”或数据绑定到WPF中的视图。我现在正在着手开发一个新的应用程序,我想使用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);
   }
}

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

您可以像其他WPF应用程序一样使用codebehind进行测试。MVVM!=没有代码隐藏。无论如何,您的ViewModel不应该与主题有太多关系。这就是UI。非常感谢您在这里的时间。我对商业开发比较陌生,对WPF也比较陌生;这有很大帮助。再次感谢。