WPF-从ViewModel修改窗口内容

WPF-从ViewModel修改窗口内容,wpf,mvvm,Wpf,Mvvm,我有一个WPF应用程序。我试图修改它以使用MVVM模式 现在,在主窗口的代码隐藏中,当我单击按钮时,我使用WebBrowser控件更改窗口的“内容”: Content = webBrowserWrapper.WebBrowser; 我希望通过ViewModel中的命令执行此操作。如何访问窗口的“内容”属性 如果不可能,修改我的窗口内容的简单方法是什么(可能创建一个新窗口并导航到它)MVVM背后的原则是UI是视图的关注点,而逻辑是ViewModel的关注点 您描述了视图的一个关注点,它在其cod

我有一个WPF应用程序。我试图修改它以使用MVVM模式

现在,在主窗口的代码隐藏中,当我单击按钮时,我使用WebBrowser控件更改窗口的“内容”:

Content = webBrowserWrapper.WebBrowser;
我希望通过ViewModel中的命令执行此操作。如何访问窗口的“内容”属性


如果不可能,修改我的窗口内容的简单方法是什么(可能创建一个新窗口并导航到它)

MVVM背后的原则是UI是视图的关注点,而逻辑是ViewModel的关注点

您描述了视图的一个关注点,它在其codebehind中得到了正确的处理。此操作中不需要涉及ViewModel


所以,换句话说。。。恭喜。您已经在那里了。

ViewModel不知道该视图。不要在ViewModel中使用UI元素。您可以在xaml中已经拥有所有可能的“内容”,并将其可见性绑定到ViewModel中的属性。将未使用的设置为“折叠”。或者,让您的viewmodel触发您的视图捕获的事件,该事件可以访问“内容”。为什么不使用Application.Current.MainWindow.Content?Thx。但是我怎么能在一个视图中有多个“ContentControl”呢?它说“属性”内容“被设置了不止一次”@N.J:谢谢,这就是我要找的。我是一个初学者,我不知道……是的,但我必须在更改内容之前做一些逻辑。我使用了“Application.Current.MainWindow.Content”“从ViewModel开始,它正在工作,即使这不是一种正确的方法。也许我应该这样做:但是使用棱镜而不是mvvm灯光…@user3544117:这与遵循mvvm模式相反。你的问题没有详细说明按下按钮时必须发生什么以及按什么顺序,因此我们无法真正帮助你。我只有一个窗口。首先,我有一个带有表单的配置视图,当我单击“保存”按钮时,我将配置保存在一个文件中,并使用WebBrowser控件修改窗口的“内容”。现在,我想用mvvm模式正确地完成它。我应该有两个视图,并在单击“保存”按钮时切换视图。我需要这样做:但是我使用Prism而不是mvvm light,并且“ViewModelBase”类不存在。。。我会做一些搜索,也许会创建一个新的职位。。。