我是wpf的新手。因此,我决定为自己制作一些基本的mvvm wpf应用程序。我的应用程序包含两个块:导航块和内容块。导航块包含一些用于更改内容块视图的按钮。正如我在制作MVVM应用程序之前所说的,所以我的视图是用户控件。 我用谷歌搜索了如何进行导航。因此,在我的应用程序中,我这样做: 在主xml中,我这样写:
<DataTemplate DataType="{x:Type ViewModels:MainViewModel}">
<Views:MainView />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModels:PersonViewModel}">
<Views:PersonView />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModels:CompanyViewModel}">
<Views:CompanyView />
</DataTemplate>
在我的主要ViewModel中,我放置了CurrentViewModel参数,该参数保留有关当前viewModel(和视图)的信息。
实际上在主要xaml中我写了(我的内容块):
<ContentControl Content="{Binding CurrentViewModel}" />
现在我可以切换视图;
我的主要问题:
谢谢您的回答!
答案 0 :(得分:0)
在我的情况下,我使用一个MainWindow和多个UserControl在屏幕之间导航。
在MainWindow中,xaml具有UserControl
...
<UserControl Name="UserControl_UserControl" HorizontalAlignment="Stretch"></UserControl>
...
在MainWindows.xaml.cs
public MainWindow()
{
this.InitializeComponent();
Switcher.Main = this;
Switcher.Switch(new MainPageControl());
}
public void Navigate(UserControl nextPage)
{
UserControl_UserControl.Content = nextPage;
Title = "MyApp | " + nextPage.Tag;
}
Swither类:
public static class Switcher
{
public static MainWindow Main;
private static UserControl ShowingPage;
private static Window PopupWindow;
public static void Switch(UserControl newPage)
{
ShowingPage = newPage;
Main.Navigate(newPage);
}
......
}
无论在哪里使用Swither.Swith(...),主窗口都会更改。