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

时间:2015-10-25 09:35:04

标签: c# wpf

我目前正在制作一个c#wpf应用程序,其中一项任务需要逐步完成单个框架,如软件安装。有没有人知道如何制作它?

1 个答案:

答案 0 :(得分:0)

我在最近的一个应用程序中做的方式是让主窗口有3个部分,一个标题,主要内容和一个页脚。每个人都绑定了html.tab <- htmlTable(sample.df, rnames=F) print(html.tab) ,以便在我的ViewModel中我可以动态更改显示的内容。在视图模型中,我根据程序的状态加载了适当的显示。

如果我在欢迎屏幕上,我会为欢迎屏幕加载适当的页眉,页脚和内容。对于每个部分,XAML看起来都是这样的:

ContentControl

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

<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(); } MainWelcomeMain Setup等都只是我创建的用户控件。

这让每个部分都很少自己做。这些面板上的按钮引发自定义事件以冒泡到视图模型。像这样:

定义自定义事件:

FooterWelcome

调用自定义事件(在此示例中为按钮):

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

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

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

然后我只在我的视图模型中定义了函数AddHandler(Events.WelcomeEvent, new RoutedEventHandler(ViewModel.GetInstance().Welcome)); 并在那里完成工作:

Welcome

这可能不是最佳的方式,但这就是我做的方式,并且在我的情况下效果很好。