多页的一个xaml页面?

时间:2015-11-02 21:31:47

标签: c# wpf xaml

简单的问题,我不知道答案。

有没有办法只使用一个xaml页面(至少一个" main"页面)来模拟多个页面。即相同:

this.Frame.Navigate(typeof(Page2), null);

只使用一页?

非常感谢,感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

您可以使用Frame控件在主页中托管其他页面:

<Frame Name="subFrame" Source="MyPage.xaml" />

然后,您可以使用subFrame.Navigate作为示例。

答案 1 :(得分:0)

如果您具体指的是能够返回的行为(因此意味着您拥有导航堆栈),您可以通过以下方式访问它:

((Frame)Window.Current.Content).BackStack

你也可以手动玩它。

您可以将参数传递给导航方法,并在导航中导航以访问传递的参数(可能使用它们来加载不同的页面部分)

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var param = e.Parameter as SomeType;
}

答案 2 :(得分:0)

你必须做很多工作,但这是可能的,是的。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <Grid x:Name="FirstContent"
          Grid.Row="0">
        < ... whatever ... >
    </Grid>

    <Grid x:Name="SecondContent"
          Grid.Row="0"
          Visibility="Collapsed">
        < ... whatever ... >
    </Grid>

    <Grid x:Name="NavigationRow"
          Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>

        < ... navigation controls down here ... >
    </Grid>

</Grid>

使用您在NavigationRow中定义的控制元素,通过使用FirstContent属性(加上动画)来切换SecondContentVisibility(或任何您想要的内容)

现在为什么你想要这样做,我不知道。你在这里做了很多额外的工作。