C# 如何预加载要导航到的页面?

C# 如何预加载要导航到的页面?,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我正在为WP8构建一个应用程序,加载MainPage.xaml需要几秒钟。 我想添加一个动画启动屏幕,下面是我所做的: 我创建了一个新的导航页面,并将其设置为默认导航页面 我在页面中放置了一个故事板动画,周围没有其他内容,因此加载速度很快 现在,如果我尝试从这个页面导航到主页,需要几秒钟,因为它必须像往常一样加载所有内容 stackoverflow上的一位用户编写了一个代码示例来执行类似的操作,他说,如果在导航到页面之前创建一个新的页面实例,它将导致页面实际预加载,从而使导航速度非常快。 这

我正在为WP8构建一个应用程序,加载MainPage.xaml需要几秒钟。 我想添加一个动画启动屏幕,下面是我所做的:

  • 我创建了一个新的导航页面,并将其设置为默认导航页面
  • 我在页面中放置了一个故事板动画,周围没有其他内容,因此加载速度很快
现在,如果我尝试从这个页面导航到主页,需要几秒钟,因为它必须像往常一样加载所有内容

stackoverflow上的一位用户编写了一个代码示例来执行类似的操作,他说,如果在导航到页面之前创建一个新的页面实例,它将导致页面实际预加载,从而使导航速度非常快。 这是他的密码:

private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
{
    var sb = new Storyboard();
    // create your animation here

    sb.Completed += (sender, args) => PreLoad();
    sb.Begin();
}

private void PreLoad()
{
    // this is the part that actually takes time and causes things to get loaded
    // you may need it in a try/catch block depending on what is in your constructor
    var page = new PageToNavigateTo();

    // now create an animation at the end of which we navigate away
    var sbOut = new Storyboard();
    // create your animation here

    sbOut.Completed += (sender, args) => NavigateToNextScreen();
    sbOut.Begin();
}

private void NavigateToNextScreen()
{
    // navigate here
}

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedFrom(e);

    // remove the loading screen from the backstack so the user doesn't see it again when hitting the back button
    NavigationService.RemoveBackEntry();
}
我只是不明白他说这句话的意思:

var page = new PageToNavigateTo();
我应该在那里做什么?我的意思是,我必须调用哪个方法来创建我要导航到的页面的新实例? 另外,在NavigateToNextScreen()方法中,是否必须使用通常的

NavigationService.Navigate(new Uri("/CreditiInfo.xaml", UriKind.Relative));
还是别的什么? 你能帮我完成这个代码吗?:)

谢谢大家!


Sergio

我建议将“PageToNavigateTo()”作为下一页名称的页面构造函数。因此,在您的情况下,您应该:

var page = new MainPage();

用于导航。这是我所知道的在Windows Phone 8应用程序的页面之间导航的唯一方法。

好的,这应该是他的意思,但它看起来像是使用常规导航服务导航到新页面。导航。。。不起作用。我的意思是,它可以工作,但它可以加载几秒钟。我必须使用哪种方法来导航到我已经创建的页面?我可以问一下这两秒延迟的原因吗?。在显示页面之前,是否必须将一些数据加载到页面中?。就像我说的,这是我知道的在页面之间导航的唯一方法,我会看看是否能找到什么。我不知道,我有一个6页的全景应用程序,有很多文本框、文本块、仪表等等。起初,它在不到一秒钟的时间内加载,但当我开始向全景图添加内容时,启动时间变长了,我想这是正常的。老实说,我不会怀疑简单地添加用户控件会大大降低加载时间。你称之为“alot”的控件有多少?。我想我找到了你从中获得代码的原始帖子。我相信他想说的是,通过在导航之前简单地调用构造函数,您将预加载。但是,我不确定这是否有效,因为一旦导航,您将导航到页面的新实例。代码也是针对WP7的,我相信它使用了与WP8不同的导航结构:52个按钮、49个网格、7个动画仪表、88个文本块、63个矩形、26个文本框、大约30个故事板和其他一些东西。我真的不知道应用程序加载这么多控件需要几秒钟是否正常。。。