一个xaml页面可用于多个页面

本文关键字:用于 一个 xaml | 更新日期: 2023-09-27 18:20:13

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

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

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

但是只使用一个页面?

非常感谢,任何帮助都将不胜感激。

一个xaml页面可用于多个页面

您可以使用Frame控件在主页面内托管另一个页面:

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

然后,您可以像使用示例一样使用subFrame.Navigate

如果你特别指的是能够返回的行为(因此意味着你有一个导航堆栈),你可以使用访问它

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

你也可以手动玩。

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

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

您需要做很多工作,但这是可能的。

<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中定义的控制元素,通过播放它们的Visibility属性(加上动画),在FirstContentSecondContent之间切换(或任何您想要的)。

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