コード例 #1
0
        protected override void OnActivated(IActivatedEventArgs e)
        {
            // Get the root frame
            Frame rootFrame = Window.Current.Content as Frame;

            // TODO: Initialize root frame just like in OnLaunched

            // Handle toast activation
            if (e is ToastNotificationActivatedEventArgs && SignInManager.CurrentUser != null)
            {
                var toastActivationArgs = e as ToastNotificationActivatedEventArgs;

                // Parse the query string (using QueryString.NET)
                QueryString args = QueryString.Parse(toastActivationArgs.Argument);

                Func <Type, Guid, Tuple <IndexGridViewItem, Guid> > ToNavigationParameters = (type, id) =>
                {
                    var item = IndexPage.GetIndexGridViewItems(SignInManager.CurrentUser.Role).First(x => x.Views.Contains(type));
                    item.Views = item.Views.OrderBy(x => x != type);
                    return(new Tuple <IndexGridViewItem, Guid>(item, id));
                };

                if (args.Contains("Type"))
                {
                    switch (args["Type"])
                    {
                    case "Account":
                    {
                        rootFrame.Navigate(typeof(PanelPage), ToNavigationParameters(typeof(ViewAccount), Guid.Parse(args["ObjectId"])), new DrillInNavigationTransitionInfo());
                        break;
                    }

                    case "Order":
                    {
                        rootFrame.Navigate(typeof(PanelPage), ToNavigationParameters(typeof(ViewOrder), Guid.Parse(args["ObjectId"])), new DrillInNavigationTransitionInfo());
                        break;
                    }

                    case "Product":
                    {
                        rootFrame.Navigate(typeof(PanelPage), ToNavigationParameters(typeof(ViewProduct), Guid.Parse(args["ObjectId"])), new DrillInNavigationTransitionInfo());
                        break;
                    }

                    case "Promotion":
                    {
                        rootFrame.Navigate(typeof(PanelPage), ToNavigationParameters(typeof(ViewOrder), Guid.Parse(args["ObjectId"])), new DrillInNavigationTransitionInfo());
                        break;
                    }

                    case "Dic":
                    {
                        rootFrame.Navigate(typeof(PanelPage), ToNavigationParameters(typeof(ViewOrderDispatchStatus), Guid.Parse(args["ObjectId"])), new DrillInNavigationTransitionInfo());
                        break;
                    }
                    }
                }
            }

            // TODO: Handle other types of activation

            // Ensure the current window is active
            Window.Current.Activate();
        }