将UWP应用程序移到当前窗口的前面

时间:2019-07-09 02:15:55

标签: c# wpf uwp

我怎么使用

await Windows.System.Launcher.LaunchUriAsync(new Uri("protocol://"));

导航到uwp应用程序的特定视图。 如果某个应用程序被最小化或隐藏在其他应用程序的后面,是否可以将其显示在屏幕前?

预先感谢

1 个答案:

答案 0 :(得分:1)

  

如何使用await Windows.System.Launcher.LaunchUriAsync(new Uri("protocol://"));导航到uwp应用程序的特定视图

为此,首先需要在 Package.appxmanifest 文件中添加 Protocol 声明。 (转到“声明”标签,然后从可用协议中添加协议)。 (MSDN Doc

在这里,我使用“ app-protocol ”作为协议名称。

Package.appxmanifest

完成此操作后,您需要在 App.xaml.cs 中覆盖OnActivated()方法。使用协议启动应用程序时,将调用此方法。 可以在此处检索调用协议时传递的参数,并根据该参数可以显示页面,也可以将该参数传递给页面并让其处理导航。

例如,如果我们的Uri是app-protocol:login?param1=true,则当您通过ProtocolActivatedEventArgs eventArgs方法收到onActivated()时,您将可以访问整个Uri。

您可以使用eventArgs.Uri访问所有Uri属性。

无论如何,您的代码应如下所示:

C#

protected override void OnActivated(IActivatedEventArgs args)
{
     if (args.Kind == ActivationKind.Protocol)
     {
         ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;

         // Get the root frame
         Frame rootFrame = Window.Current.Content as Frame;

         // Do not repeat app initialization when the Window already has content,
         // just ensure that the window is active
         if (rootFrame == null)
         {
             // Create a Frame to act as the navigation context and navigate to the first page
             rootFrame = new Frame();

             rootFrame.NavigationFailed += OnNavigationFailed;

             if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
             {
                 //TODO: Load state from previously suspended application
             }                    
             // Place the frame in the current Window
             Window.Current.Content = rootFrame;
         }

         //URI : app-protocol:login?param1=true
         //Logic for showing different pages/views based on parameters passed 
         if (eventArgs.Uri.PathAndQuery != string.Empty)//PathAndQuery:login?param1=true
         {
             var absolutePath = eventArgs.Uri.AbsolutePath;//AbsolutePath:login
             if (absolutePath.Equals("login"))
             {
                 rootFrame.Navigate(typeof(LoginPage));
             }
             else
             {
                 rootFrame.Navigate(typeof(MainPage));
             }
         }
         else
         {
             rootFrame.Navigate(typeof(MainPage));
         }                
     }
     // Ensure the current window is active
     Window.Current.Activate();
 }

  

如果将某个应用程序最小化或隐藏在其他应用程序之后,是否可以将其显示在屏幕前?

我们正在致电Window.Current.Activate();来确保这一点。