简体   繁体   English

如何在Windows 8的初始屏幕中添加进度环?

[英]How to add a progress ring to the splash screen in Windows 8?

I need to activate the splash screen and add to it a progress ring in a Windows 8 metro app using C# and XAML. 我需要激活初始屏幕,并在Windows 8 Metro应用程序中使用C#和XAML向其添加进度环。 I have added the extended splash screen but it is not showing at all! 我已经添加了扩展的初始屏幕,但是根本没有显示! Can anybody tell me how to do this? 有人可以告诉我该怎么做吗?

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using Windows.ApplicationModel;
    using Windows.ApplicationModel.Activation;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    using SplashScreenSample; 

    // The Blank Application template is documented at     http://go.microsoft.com/fwlink/?        LinkId=234227

    namespace App1
    {
    /// <summary>
    /// Provides application-specific behavior to supplement the default Application class.
    /// </summary>
    sealed partial class App : Application
    {
        /// <summary>
        /// Initializes the singleton application object.  This is the first line of authored code
        /// executed, and as such is the logical equivalent of main() or WinMain().
        /// </summary>
        public App()
        {
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }

        /// <summary>
        /// Invoked when the application is launched normally by the end user.  Other entry points
        /// will be used when the application is launched to open a specific file, to display
        /// search results, and so forth.
        /// </summary>
        /// <param name="args">Details about the launch request and process.</param>
        protected override void OnLaunched(LaunchActivatedEventArgs args)
        {
            // Do not repeat app initialization when already running, just ensure that
            // the window is active
           /* if (args.PreviousExecutionState != ApplicationExecutionState.Running)
            {
                bool loadState = (args.PreviousExecutionState ==                  ApplicationExecutionState.Terminated);
                ExtendedSplash extendedSplash = new ExtendedSplash(args.SplashScreen, loadState);
                Window.Current.Content = extendedSplash;
            }

            Window.Current.Activate();*/

            if (args.PreviousExecutionState == ApplicationExecutionState.Running)
            {
                Window.Current.Activate();
                return;
            }

            if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
            {
                //TODO: Load state from previously suspended application
            }

            // Create a Frame to act navigation context and navigate to the first page
            var rootFrame = new Frame();
             rootFrame.Navigate(typeof(MainPage));

             // Place the frame in the current window and ensure that it is active
            Window.Current.Content = rootFrame;
             Window.Current.Activate();
            if (!rootFrame.Navigate(typeof(MainPage)))
            {
                throw new Exception("Failed to create initial page");
            }

            // Place the frame in the current Window and ensure that it is active
            Window.Current.Content = rootFrame;
            Window.Current.Activate();
        }

        /// <summary>
        /// Invoked when application execution is being suspended.  Application state is saved
        /// without knowing whether the application will be terminated or resumed with the contents
        /// of memory still intact.
        /// </summary>
        /// <param name="sender">The source of the suspend request.</param>
        /// <param name="e">Details about the suspend request.</param>
        private void OnSuspending(object sender, SuspendingEventArgs e)
        {
            var deferral = e.SuspendingOperation.GetDeferral();
            //TODO: Save application state and stop any background activity
            deferral.Complete();
        }

        /// <summary>
        /// Invoked when the application is activated to display search results.
        /// </summary>
        /// <param name="args">Details about the activation request.</param>
        protected override void OnSearchActivated(Windows.ApplicationModel.Activation.SearchActivatedEventArgs args)
        {
            App1.SearchResultsPage1.Activate(args.QueryText, args.PreviousExecutionState);
        }
    }
}

You are on the right track by using the extended start screen. 使用扩展的开始屏幕,您在正确的轨道上。

You should start with the sample and quickstart, run that, see if it works for you http://msdn.microsoft.com/en-us/library/windows/apps/xaml/Hh973049%28v=win.10%29.aspx http://code.msdn.microsoft.com/windowsapps/Splash-screen-sample-89c1dc78 您应该从示例和快速入门开始,运行该示例,并查看它是否对您有用http://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/Hh973049%28v=win.10%29。 aspx http://code.msdn.microsoft.com/windowsapps/Splash-screen-sample-89c1dc78

If the sample is working and your code is not, try to find what is different between the two, or alternatively migrate your code into the sample. 如果该示例正常工作,而您的代码无效,请尝试查找两者之间的不同之处,或者将代码迁移到该示例中。 It could be something is not proper on the XAML side too. 在XAML方面也可能是不合适的。

This link is very helpful,and explain how you can add a progress ring to the splash screen in Windows 8? 此链接非常有帮助,并说明了如何在Windows 8的初始屏幕中添加进度环? http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh868191.aspx#modify_the_launch_activation_handler http://msdn.microsoft.com/zh-CN/library/windows/apps/xaml/hh868191.aspx#modify_the_launch_activation_handler

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM