应用程序通过单个框架进行导航

本文关键字:导航 框架 单个 应用程序 | 更新日期: 2023-09-27 18:19:05

我目前正在制作一个c# wpf应用程序,其中需要通过单个框架逐步完成任务,例如软件安装。有人知道怎么做吗?

应用程序通过单个框架进行导航

我在最近的一个应用程序中做的方法是让主窗口有3个部分,一个页眉,主要内容和一个页脚。每个都有一个我绑定的ContentControl,以便在我的ViewModel中我可以动态更改显示的内容。在视图模型中,我根据程序的状态加载了适当的显示。

如果我在欢迎屏幕,我为欢迎屏幕加载适当的页眉、页脚和内容。每个部分的XAML如下所示:

<ContentControl x:Name="ContentHeader" Content="{Binding Path=ContentHeader}" Grid.Row="0"/>
<ContentControl x:Name="ContentMain" Content="{Binding Path=ContentMain}" Grid.Row="1"/>
<ContentControl x:Name="ContentFooter" Content="{Binding Path=ContentFooter}" Grid.Row="2"/>

在我的代码中,我根据需要创建了新的实例:

if (_screen == Constants.Screens.Welcome)
{
    ContentHeader = new HeaderWelcome();
    ContentMain = new MainWelcome();
    ContentFooter = new FooterWelcome();
}
else if (_screen == Constants.Screens.Setup)
{
    ContentHeader = new HeaderSetup();
    ContentMain = new MainSetup();
    ContentFooter = new FooterSetup();
}

每个部分,MainWelcome, Main Setup, FooterWelcome等,都只是我创建的用户控件。

这让每个部分自己做的事情很少。这些面板上的按钮会将自定义事件弹出到视图模型中。像这样:

定义自定义事件:

public static readonly RoutedEvent WelcomeEvent=
            EventManager.RegisterRoutedEvent("WelcomeEvent", RoutingStrategy.Bubble,
            typeof(RoutedEventHandler), typeof(UserControl));

调用自定义事件(在本例中是从按钮):

private void ButtonWelcome_Click(object sender, RoutedEventArgs e)
{
    RaiseEvent(new RoutedEventArgs(Events.TestTintEvent));
}

最后,将事件绑定到视图模型中的一个函数。这可以在主窗口的构造函数中完成:

AddHandler(Events.WelcomeEvent, new RoutedEventHandler(ViewModel.GetInstance().Welcome));

然后我有函数Welcome定义在我的视图模型,并做那里的工作:

public void Welcome(object sender, RoutedEventArgs e)
{
     //Do Work
}

这可能不是最理想的方法,但我就是这么做的,而且在我的情况下效果很好。