C# 一个xaml页面可用于多个页面?

C# 一个xaml页面可用于多个页面?,c#,wpf,xaml,C#,Wpf,Xaml,我不知道答案的简单问题 是否有一种方法可以只使用一个xaml页面(至少一个“主”页面)来模拟多个页面。i、 e同: this.Frame.Navigate(typeof(Page2), null); 但是只使用一页 非常感谢,非常感谢您的帮助。您可以使用框架控件在主页内承载另一个页面: <Frame Name="subFrame" Source="MyPage.xaml" /> 然后,您可以使用子帧。导航,与您的示例相同。如果您具体指的是能够返回的行为(因此意味着您有一个导航

我不知道答案的简单问题

是否有一种方法可以只使用一个xaml页面(至少一个“主”页面)来模拟多个页面。i、 e同:

this.Frame.Navigate(typeof(Page2), null);
但是只使用一页


非常感谢,非常感谢您的帮助。

您可以使用
框架
控件在主页内承载另一个页面:

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


然后,您可以使用
子帧。导航
,与您的示例相同。

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

((Frame)Window.Current.Content).BackStack
你也可以手动玩它

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


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

<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>

< ... 不管怎样…>
< ... 不管怎样…>
< ... 下面的导航控件…>
使用您在
导航行
中定义的控件元素,通过播放它们的
可见性
属性(加上动画),在
第一内容
第二内容
(或任何您想要的内容)之间切换


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

这不也是上面提到的吗?转到视图中的其他xaml页面?我已稍微更新了代码-它将仅在框架控件中导航页面-框架周围的页面其余部分将保持不变。我明白了,因此我将使用此代码导航到每个
,但是
子帧
s将全部位于同一个
xaml
文件中?这允许您使用一个始终可见的“母版”页面,但子帧的每个页面将位于一个单独的.xaml文件中。是的,我确实想返回,但我认为我的帖子措词错误。基本上:在一个
.xaml
文件(和
.xaml.cs
)中,我希望能够使用导航控件移动到不同的视图(页面?)。我想用户界面会保持不变,但内容会发生变化?你的意思是只动态地改变内容(内容是一些与页面轮廓无关的实际数据),但仍然能够使用前后功能?有点像。在一个文件中,我希望它可以显示数据(即登录屏幕,当您登录时,它会将您带到启动页面,然后从那里您可以查看设置等),但在同一个xaml文件中,您可以调整页面内控件的可见性属性(例如,折叠/可见)并使用backback来保留返回功能(可能有更简单的方法,但目前无法想到)
<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>