我目前正在制作一个c#wpf应用程序,其中一项任务需要逐步完成单个框架,如软件安装。有没有人知道如何制作它?
答案 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();
}
,MainWelcome
,Main 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
这可能不是最佳的方式,但这就是我做的方式,并且在我的情况下效果很好。