none
metro loading 如何跳转到MainPage RRS feed

  • 问题

  • 我按照

    官方的

    添加初始屏幕(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用) (Windows)

    的Demo 写了一份。

    我不想用button 跳转到Mainpage 。

    请问如何loading 一小段时间后自动跳转到主页面?

     
                InitializeComponent();
    
                LearnMoreButton.Click += new RoutedEventHandler(LearnMoreButton_Click);
                
               // new MainPage().webviews.LoadCompleted += new RoutedEventHandler(LearnMoreButton_Click);
                // Listen for window resize events to reposition the extended splash screen image accordingly.
                // This is important to ensure that the extended splash screen is formatted properly in response to snapping, unsnapping, rotation, etc...
                Window.Current.SizeChanged += new WindowSizeChangedEventHandler(ExtendedSplash_OnResize);
    
                splash = splashscreen;
    
                if (splash != null)
                {
                    // Register an event handler to be executed when the splash screen has been dismissed.
                    splash.Dismissed += new TypedEventHandler<SplashScreen, Object>(DismissedEventHandler);
    
                    // Retrieve the window coordinates of the splash screen image.
                    splashImageRect = splash.ImageLocation;
                    PositionImage();
                }
    
                // Create a Frame to act as the navigation context 
                rootFrame = new Frame();
                
                // Restore the saved session state if necessary
                RestoreStateAsync(loadState);

    void LearnMoreButton_Click(object sender, RoutedEventArgs e)
            {
                // Navigate to mainpage    
                rootFrame.Navigate(typeof(MainPage));
    
                // Set extended splash info on main page
               // ((MainPage)rootFrame.Content).SetExtendedSplashInfo(splashImageRect, dismissed);
    
                // Place the frame in the current Window 
                Window.Current.Content = rootFrame;
    
            }


    • 已编辑 Good name 2012年11月9日 6:33 a
    2012年11月9日 6:25

答案

  • SplashScreen的作用在于,微软的stroe有App launch的时间显示,不能超过5秒。但是往往有些操作,我们需要在MainPage之前完成,但是这些操作又比较消耗时间。 因此,SplashScreen就是用来在这个时候处理这些操作的,因为SplashScreen不会计入launch的时间。 而你的需求,是需要MainPage在Loading的时候不显示,可以做个简单的处理,在MainPage放一个层,做遮蔽和Loading处理,在MainPage的Loaded事件中或者你的数据加载完之后取消这个Loading层的现实即可。 或者,你在SplashScreen中完成数据的获取,那么你在MainPage中不需要等待数据的获取,单纯UI的加载时非常迅速的,不需要等待。

    Thanks! Damon.Tian

    • 已标记为答案 Good name 2012年11月15日 10:26
    2012年11月14日 8:16
  • 很好的建议。
    • 已标记为答案 Good name 2012年11月15日 10:26
    2012年11月15日 10:26

全部回复

  • Hi,

    一般使用这个扩展屏幕的话会有一些信息需要填等等才会有按钮跳转这样的问题。

    如果你想等一段时间就跳转的话可以自己构造一个async函数放入ExtendedSplash的构造函数中,在其中放入:

    await Task.Delay(1000);

    可以让线程等待1秒。


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年11月12日 6:46
    版主
  • 谢谢你的回答。画面可以等待,问题是我想等待我的MainPage页面的东西加载完毕,然后再自动关闭Loading 页面。问题是我不能得知MainPage页面加载需要多长时间。而且在loading的时候我MainPage的代码不能执行。
    2012年11月12日 11:14
  • SplashScreen的作用在于,微软的stroe有App launch的时间显示,不能超过5秒。但是往往有些操作,我们需要在MainPage之前完成,但是这些操作又比较消耗时间。 因此,SplashScreen就是用来在这个时候处理这些操作的,因为SplashScreen不会计入launch的时间。 而你的需求,是需要MainPage在Loading的时候不显示,可以做个简单的处理,在MainPage放一个层,做遮蔽和Loading处理,在MainPage的Loaded事件中或者你的数据加载完之后取消这个Loading层的现实即可。 或者,你在SplashScreen中完成数据的获取,那么你在MainPage中不需要等待数据的获取,单纯UI的加载时非常迅速的,不需要等待。

    Thanks! Damon.Tian

    • 已标记为答案 Good name 2012年11月15日 10:26
    2012年11月14日 8:16
  • SplashScreen的作用在于,微软的stroe有App launch的时间显示,不能超过5秒。但是往往有些操作,我们需要在MainPage之前完成,但是这些操作又比较消耗时间。 因此,SplashScreen就是用来在这个时候处理这些操作的,因为SplashScreen不会计入launch的时间。 而你的需求,是需要MainPage在Loading的时候不显示,可以做个简单的处理,在MainPage放一个层,做遮蔽和Loading处理,在MainPage的Loaded事件中或者你的数据加载完之后取消这个Loading层的现实即可。 或者,你在SplashScreen中完成数据的获取,那么你在MainPage中不需要等待数据的获取,单纯UI的加载时非常迅速的,不需要等待。

    Thanks! Damon.Tian


        HI,你好,SplashScreen如何使用,能够详细介绍一下吗?
    2012年11月15日 3:52
  • 很好的建议。
    • 已标记为答案 Good name 2012年11月15日 10:26
    2012年11月15日 10:26