我正在使用设计模式 MVVM 在 WPF 中做一个应用程序。我有全尺寸窗口(不仅最大化而且全尺寸)。
我需要将一个窗口切换到另一个窗口(通过在窗口 A 中按下按钮 x 打开窗口 B,并在显示窗口 B 时关闭窗口 A)。
我在窗口 B 的加载事件中关闭窗口 A,但在显示窗口 B 之前我仍然可以看到桌面一段时间。
不看桌面怎么办?
我正在使用设计模式 MVVM 在 WPF 中做一个应用程序。我有全尺寸窗口(不仅最大化而且全尺寸)。
我需要将一个窗口切换到另一个窗口(通过在窗口 A 中按下按钮 x 打开窗口 B,并在显示窗口 B 时关闭窗口 A)。
我在窗口 B 的加载事件中关闭窗口 A,但在显示窗口 B 之前我仍然可以看到桌面一段时间。
不看桌面怎么办?
您可以拥有一个带有ContentControl
. 您需要做的就是更改其Content
属性以在视图之间切换。
我还建议查看内置此类功能的Prism 库,特别是其导航文档。
您可以制作 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
viewmodel1
和viewmodel2
一个命令,它将改变currentviewmodel
你的 MainWindow 的 Datacontext 到 MainViewModel。
在您的 MainWindow 中,您将按钮绑定到该命令,然后您只需使命令更改 currentviewmodel 并在 MainWindow 内
<Button Content="change grid data context" Command="{Binding yourCommand}"/>
<Grid DataContext="{Binding currentviewmodel}"/>
您不必担心要使用哪个视图,当 DataContext 设置时,DataTemplates 定义要使用哪个视图