如何在没有datatemplate的情况下在wpf mvvm中导航用户控件视图?
我是wpf的新手。所以我决定为自己制作一些基本的mvvm wpf应用程序。我的应用程序包含两个块:导航块和内容块。导航块包含一些用于更改内容块视图的按钮。正如我之前所说,我制作MVVM应用程序,所以我的视图是用户控件。 我在谷歌上搜索如何导航。所以在我的应用程序中,我做到了: 在主xml中,我编写了如下内容:如何在没有datatemplate的情况下在wpf mvvm中导航用户控件视图?,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我是wpf的新手。所以我决定为自己制作一些基本的mvvm wpf应用程序。我的应用程序包含两个块:导航块和内容块。导航块包含一些用于更改内容块视图的按钮。正如我之前所说,我制作MVVM应用程序,所以我的视图是用户控件。 我在谷歌上搜索如何导航。所以在我的应用程序中,我做到了: 在主xml中,我编写了如下内容: <DataTemplate DataType="{x:Type ViewModels:MainViewModel}"> <Views:MainView />
<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中,我实际编写了(我的内容块):
所以现在我可以交换观点了
我的主要问题是:
谢谢你的回答 在我的例子中,我使用一个主窗口和多个用户控件在屏幕之间导航 在MainWindow.xaml中有
UserControl
...
<UserControl Name="UserControl_UserControl" HorizontalAlignment="Stretch"></UserControl>
...
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(…)主窗口都会更改。谢谢,我知道它在您的情况下是如何工作的,但这不是我想要的。我需要在ContentControl块中切换。但是非常感谢你!我暂时不写WPF代码。我有点生疏:)但也许你可以修改一下。我对TabControl也使用了类似的结构。我希望您可以将其用于内容控制。祝你好运:)
public MainWindow()
{
this.InitializeComponent();
Switcher.Main = this;
Switcher.Switch(new MainPageControl());
}
public void Navigate(UserControl nextPage)
{
UserControl_UserControl.Content = nextPage;
Title = "MyApp | " + nextPage.Tag;
}
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);
}
......
}