一个xaml页面可用于多个页面
本文关键字:用于 一个 xaml | 更新日期: 2023-09-27 18:20:13
我不知道答案的简单问题。
有没有办法只使用一个xaml页面(至少一个"主"页面)来模拟多个页面。即与相同
this.Frame.Navigate(typeof(Page2), null);
但是只使用一个页面?
非常感谢,任何帮助都将不胜感激。
您可以使用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
属性(加上动画),在FirstContent
和SecondContent
之间切换(或任何您想要的)。
现在关于为什么你想这么做,我不知道。你在这里要做很多额外的工作。