0

我正在使用设计模式 MVVM 在 WPF 中做一个应用程序。我有全尺寸窗口(不仅最大化而且全尺寸)。

我需要将一个窗口切换到另一个窗口(通过在窗口 A 中按下按钮 x 打开窗口 B,并在显示窗口 B 时关闭窗口 A)。

我在窗口 B 的加载事件中关闭窗口 A,但在显示窗口 B 之前我仍然可以看到桌面一段时间。

不看桌面怎么办?

4

2 回答 2

2

您可以拥有一个带有ContentControl. 您需要做的就是更改其Content属性以在视图之间切换。

我还建议查看内置此类功能的Prism 库,特别是其导航文档

于 2013-11-03T09:52:24.163 回答
0

您可以制作 2 个单独的用户控件,并将每个窗口的内容放在一个用户控件中。

在您的主窗口中,您定义数据模板,这些模板将根据当前决定使用什么视图Datacontext

<Window.Resources>
<DataTemplate DataType="{x:Type viewmodels:viewmodel1}" >
     <views:Usercontrol1/>
</DataTemplate>

<DataTemplate DataType="{x:Type viewmodels:viewmodel2}" >
    <views:Usercontrol2/>
</DataTemplate>
</Window.Resources>

然后你创建一个MainViewModel并定义currentviewmodel viewmodel1viewmodel2 一个命令,它将改变currentviewmodel你的 MainWindow 的 Datacontext 到 MainViewModel。

在您的 MainWindow 中,您将按钮绑定到该命令,然后您只需使命令更改 currentviewmodel 并在 MainWindow 内

<Button Content="change grid data context" Command="{Binding yourCommand}"/>
<Grid DataContext="{Binding currentviewmodel}"/>

您不必担心要使用哪个视图,当 DataContext 设置时,DataTemplates 定义要使用哪个视图

于 2013-11-03T10:37:54.123 回答