Wpf 使用MVVM将GUI与业务逻辑解耦的最后步骤?

Wpf 使用MVVM将GUI与业务逻辑解耦的最后步骤?,wpf,mvvm,blend,Wpf,Mvvm,Blend,就在最近,我学习了如何使用MVVM将GUI与底层模型解耦。最后,我尽可能多地学习如何将当前的应用程序转换为MVVM,并取得了很大的成功。现在,我需要弄清楚如何实际使用Blend中生成的GUI,并使用它来代替当前在Visual Studio中设计的GUI。我在网上找不到任何资源来尽可能无缝地实现这一点。我想知道你们都做了些什么,为你们做了些什么 我的最终解决方案是允许我在运行时从菜单中选择一个皮肤,并立即将GUI从用户选择的当前皮肤更改为另一个皮肤。有人能给我指一些解释如何做到这一点的帖子吗 我目

就在最近,我学习了如何使用MVVM将GUI与底层模型解耦。最后,我尽可能多地学习如何将当前的应用程序转换为MVVM,并取得了很大的成功。现在,我需要弄清楚如何实际使用Blend中生成的GUI,并使用它来代替当前在Visual Studio中设计的GUI。我在网上找不到任何资源来尽可能无缝地实现这一点。我想知道你们都做了些什么,为你们做了些什么

我的最终解决方案是允许我在运行时从菜单中选择一个皮肤,并立即将GUI从用户选择的当前皮肤更改为另一个皮肤。有人能给我指一些解释如何做到这一点的帖子吗

我目前的目标没有那么雄心勃勃——我希望能够将新的混合GUI添加到我的Visual Studio项目中,并在编译时显示新的混合GUI。如果我想回到旧的GUI,我必须重新编译。现在,没关系

我已将我的Blend项目添加到VS2008解决方案中,并将其设置为启动应用程序。这很好——如果我运行这个应用程序,我的新GUI就会出现,而不是旧GUI。现在的问题是,它需要实际位于不同文件夹中的DLL—原始启动应用程序的bin\Debug文件夹。我是否应该将我的原始GUI作为启动应用程序,然后将其应用程序代码加载到另一个GUI

此外,每个GUI都需要对ViewModel的引用。在我的例子中,我只是在我当前的GUI类中实例化它。对于混合GUI,我也在那里实例化了一个,因为只有一个GUI是活动的。这就是应该使用统一框架的地方吗


对于所有可能不连贯的问题,我很抱歉,但我不太确定我应该如何从这里开始。我觉得我很快就要向自己证明,从GUI的角度来看,MVVM是一种方式,我已经在可测试性方面得到了认可。

我看到的所有示例都通过使用某种形式的ResourceDictionary交换来动态切换GUI外观。几个链接:


希望能有所帮助。

我发现了一个错误,在代码的一部分中,我使用了错误的属性来获取当前正在运行的程序集的路径。我现在正在使用

System.Reflection.Assembly.GetExecutingAssembly().Location

虽然这确实有效,但仅当我将exe从Blend项目的bin\Debug文件夹复制到主应用程序的bin\Debug文件夹中时,它才有效。我想,我将不得不通过使用后期构建事件来适应这种情况。在过去的几个月里,我对.NET工作非常失望,在那里我不必像C++那样做这件事,因为所有引用的程序集都会自动复制。如果我想调试任何隐藏的代码,我还必须在Blend项目的设置中设置起始可执行文件,这也很不方便,尤其是在不同的计算机上工作时,路径设置不一样。任何建议在此也将不胜感激

谢谢,今晚我会看看这些链接!隐马尔可夫模型。。。我不该说皮肤。我并不是只想改变用户界面元素的chrome——我认为这些布局是如此的不同,以至于我不认为它们可以被改变模板之类的东西所覆盖。然而,在某个时候,我也会希望动态地进行蒙皮,所以这仍然是非常有用的信息。因此,在这一点上,我真的需要弄清楚如何在启动Visual Studio时启动新的GUI,同时能够访问以前GUI的bin\Debug文件夹中的文件。不幸的是,仅仅设置工作目录是不够的。为了澄清,我接受了我自己的答案,因为事实证明,实际上没有任何需要做的事情来支持我所寻找的。我只是有一个配置错误,从错误的目录中读取,这就是为什么我的数据绑定控件没有显示任何内容。与MVVM的解耦真的很有效!