如何在Windows Phone应用程序中导航页面内的页面

时间:2014-07-16 03:52:53

标签: windows windows-phone-8 windows-phone-8.1

我正在创建一个WindowsPhone应用程序,我必须导航到我的应用程序中的某些页面,但我不想离开MainPage。

它就像MainPage中的一个小页面,有可能吗?

我尝试创建相同的用户控件,但缺点是在加载MainPage之后加载用户控件,但我不想要相同。我想点击我的应用程序中的某个地方,然后在内部加载下一页(保持我的应用程序快速),而不是在MainPage加载事件上一次加载所有用户控件。

如果您有其他方法可以提供帮助,请回复。

3 个答案:

答案 0 :(得分:0)

第一帧保持打开状态时无法导航到框架。由于枢轴/全景,你不能使用弹出窗口。你必须坚持使用用户控制方法。您可以在下面优化您的xaml以获得有关如何优化xaml的一些提示

Optimize loading XAML

修改

    MyUserControl1 control = new MyUserControl1();
    control.DataContext = //bindable data from usercontrol
    this.ContentRoot.Children.Add(control);

答案 1 :(得分:0)

在MainPage中只有一个Frame。使用该框架导航到其他页面。

 <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中导航到的页面。

答案 2 :(得分:0)

如果您的主页面有足够的空间用于您的&#34;其他页面&#34;,您可以尝试这样做: 在您的主XAML中放置另一个框架,并将其他页面导航到该框架。你的主要仍然可见并且活跃。

我已经在更大的屏幕(平板电脑)上做到了,并且知道陷阱。 不要将导航帮助器用于其他页面,因为您不会导航回来而是发送其他页面&#34;其他页面&#34;那个框架。或者在导航后删除最后一个backstack条目。

secondFrame.Navigate(pageType, frames);
if (secondFrame.BackStackDepth > 0)
   secondFrame.BackStack.RemoveAt(secondFrame.BackStackDepth - 1);