[英]How can i navigate pages inside a page in Windows Phone Application
我正在创建WindowsPhone应用程序,我必须为其导航至应用程序内的某些页面,但我不想离开MainPage。
就像MainPage内的一小页一样,有什么办法吗?
我尝试为同一用户创建用户控件,但缺点是紧随MainPage加载后才加载用户控件,但我不希望这样。 我想单击应用程序中的某个位置,然后将其加载到内部的下一页(保持应用程序快速运行),而不是在MainPage加载事件中一次加载所有用户控件。
如果您有其他替代方法可以提供帮助,请回复。
当第一帧保持打开状态时,无法导航到某个帧。 并且由于枢轴/全景,您无法使用弹出窗口。 您必须坚持使用用户控制方法。 您可以优化xaml的性能,以下是一些有关如何优化xaml的提示
编辑
MyUserControl1 control = new MyUserControl1();
control.DataContext = //bindable data from usercontrol
this.ContentRoot.Children.Add(control);
只需在MainPage内添加一个框架即可。 使用该框架导航到其他页面。
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid x:Name="TitlePanel" Grid.Row="0">
<StackPanel Orientation="Vertical">
<TextBlock Text="Title" />
<Button Click="Button_Click"
Content="Page1"
Tag="SharedFrame.BasicPage1" />
<Button Click="Button_Click"
Content="Page2"
Tag="SharedFrame.BasicPage2" />
</StackPanel>
</Grid>
<Grid x:Name="ContentPanel" Grid.Row="1">
<Frame x:Name="rootFrame" />
</Grid>
</Grid>
这是您从后面的代码导航的方式:
private void Button_Click(object sender, RoutedEventArgs e)
{
Button b = sender as Button;
if (b != null && b.Tag != null)
{
Type pageType = Type.GetType(b.Tag.ToString());
if (pageType != null && rootFrame.CurrentSourcePageType != pageType)
{
rootFrame.Navigate(pageType);
}
}
}
BasicPage1和BasicPage2是我要导航到MainPage内部的页面。
如果您的主页有足够的可用空间来容纳“其他页面”,则可以尝试以下操作:在主XAML中放置另一个框架,然后将其他页面导航到该框架。 您的主体仍然可见且处于活动状态。
我已经在更大的屏幕(平板电脑)上这样做了,并且知道了陷阱。 不要将导航助手用于其他页面,因为您将不会向后导航,而是将其他“其他页面”发送到该框架。 或在导航后删除上一个后退堆栈条目。
secondFrame.Navigate(pageType, frames);
if (secondFrame.BackStackDepth > 0)
secondFrame.BackStack.RemoveAt(secondFrame.BackStackDepth - 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.