【Win10开发】Toast通知——前台激活

上篇文章我们将了大体的Toast通知的模板及实例展示,那么,这篇文章就来讲讲Toast的前台激活。

首先是xaml界面,很简单,我们放一个Button和TextBlock,TextBlock用来显示Toast通知传过来的内容。

        <StackPanel VerticalAlignment="Center">
            <Button  Content="通知" VerticalAlignment="Top" HorizontalAlignment="Center"  Click="Button_Click" />
            <TextBlock Name="getInfo" Height="60" FontSize="40" HorizontalAlignment="Center" Foreground="Red" FontFamily="Microsoft YaHei"/>
        </StackPanel>

然后来构造Toast的架构。这些东西上篇文章讲了,在这里就不详述了。

            string xml = "<toast>" +
                            "<visual>" +
                                "<binding template=\"ToastGeneric\">" +
                                    "<text>通知</text>" +
                                    "<text>Toast Test</text>" +
                                    "<text>请输入您的姓名</text>" +
                                "</binding>" +
                            "</visual>" +
                            "<actions>" +
                                    "<input id=\"name\" type=\"text\" placeHolderContent=\"请输入姓名\" />" +
                                    "<action content = \"确定\" arguments = \"ok\" activationType=\"foreground\" />" +
                                    "<action content = \"取消\" arguments = \"cancel\" />" +
                            "</actions >" +
                         "</toast>";

接下来,便是让Toast通知显示出来。

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);
            ToastNotification notification = new ToastNotification(doc);                        ToastNotificationManager.CreateToastNotifier().Show(notification);

在这里我们先写一个ShowText方法,以便将Toast通知的参数传递到TextBlock控件的Text属性中。

        public void ShowText(string msg)
        {
            getInfo.Text = msg;
        }

由于应用程序是被前台激活的,所以要为Application类作激活处理,我们在App类中,重写OnActivated方法,这些代码是写在App.xaml.cs文件里面。完整代码如下,后面我们会详细讲解。

        protected override void OnActivated(IActivatedEventArgs args)
        {            //判断是否为Toast所激活
            if (args.Kind == ActivationKind.ToastNotification)
            {
                // 转换参数类型
                ToastNotificationActivatedEventArgs toastargs = (ToastNotificationActivatedEventArgs)args;
                // 获取页面引用
                Frame root = Window.Current.Content as Frame;
                if (root == null)
                {
                    root = new Frame();
                    Window.Current.Content = root;
                }
                if (root.Content == null)
                {
                    root.Navigate(typeof(MainPage));
                }
                MainPage page = (MainPage)root.Content;
                string activeargs = toastargs.Argument;
                if (activeargs == "ok")
                {
                    // 获取用户输入的内容
                    string name = toastargs.UserInput["name"] as string;
                    page.ShowText($"您的姓名是:{name}");
                }
                else
                {
                    page.ShowText("未收集到信息。");
                }
            }
            Window.Current.Activate();
        }

首先我们需要通过方法参数的Kind属性判断是否为Toast通知所激活,然后将方法参数转换为ToastNotificationActivatedEventArgs类型类型,此时toast的Argument属性的值就是我们在Toast XML中定义里面的arguments,值就是“ok”,“cancel”,UserInput的值就是input元素所输入的内容,是字典类型,我们可以获取到用户在文本框中输入的内容。我们还需要获取的MainPage,将Toast通知的参数传递到MainPage的TextBlock控件中。

好了,前台激活部分我们也做好的,最后当然要来看看结果。

时间: 2024-11-08 18:54:30

【Win10开发】Toast通知——前台激活的相关文章

【Win10开发】Toast通知——后台激活

前篇文章我们写了关于Toast的前台激活,那么接下来就讲一讲它的后台激活.当通知出现时并不会出现app的界面,但是app能在后台获取到通知中的信息. 当然 首先我们需要创建一个后台任务,我们先创建一个类库,将其命名为Background,这里需要注意下,这个类库的输出类型必须选择Windows运行时组件才不会爆,感谢Edi.Wang,我也是看到他的博客才知道的. 我们接着创建BackgroundTask类,并在类中写以下代码. 1 public sealed class BackgroundTa

【Win 10 应用开发】Toast通知激活应用——前台&amp;后台

原文:[Win 10 应用开发]Toast通知激活应用--前台&后台 老周最近热衷于讲故事,接下来还是讲故事时间. 有人问我:你上大学的时候,有加入过学生会吗?读大学有没有必要加入学生会? 哎哟,这怎么回答呢,从短期来说,加入学生会有点用,至少可以娱乐一下,运气好的话,说不定能遇到红颜知己,但这概率相当低.从长远发展看嘛,是没什么用.老周当年读了四年本科,在学生会混了四年,什么名堂也没混出来. 一方面老周向来不求虚名,所以也没去参选所谓的什么部长.主席之类的,这些“官衔”听起来很高大上,实际上很

【Win10 应用开发】从前台应用触发后台任务

原文:[Win10 应用开发]从前台应用触发后台任务 有关后台任务的使用,估计大伙伴们不会陌生,而且老周曾经在某文中也简单讲述过.说到后台任务,老周想到了一个问题:有人问,后台任务一定要独立写到一个Runtime组件中吗,能不能写到主项目的代码中? 老周严重地回答你:是可以的,在配置清单文件中,你只需要在Extension元素中指定Executable为主项目的.exe文件即可. <Extension Category="windows.backgroundTasks" Entr

WP8.1学习系列(第二章)——Toast通知

Toast 通知概述(Windows 运行时应用) 你的应用要想通过 Toast 通知通信,必须在应用的清单文件中声明它支持 Toast.Toast 通知可包含文本,并且 Windows 上的 Toast 通知可包含图像,但不支持辅助操作(例如按钮).Toast 还可在显示时播放系统定义的声音.在 Windows 上,Toast 通知显示在屏幕的右上角(对于从右到左 (RTL) 的语言,显示在左上角).在 Windows Phone 8.1 上,Toast 通知显示在屏幕顶部.Toast 通知可

【Win10 应用开发】自适应Toast通知的XML文档结构

原文:[Win10 应用开发]自适应Toast通知的XML文档结构 老规矩,在开始之前老周先讲个故事. 话说公元2015年7月20日,VS 2015发布.于是,肯定有人会问老周了,C#6有啥新特性,我学不来啊.学不来的话你应该检讨.老周比较保守地计算一下,学会C# 6只需要20秒,不信的话,老周笔划笔划一下,你就明白了. 1.属性自动初始化.在4.0中引入了这样声明属性: public int VVVV { get; set;} 以前是属性包装一个字段,在初始化属性时只要对字段赋值即可,这个省略

【Win10开发】Toast通知

Toast 通知是一种发送给用户的暂时消息,包含相关的.具有时效性的信息,并且提供对应用中相关内容的快速访问.它可显示你是在另一个应用中.在“开始”屏幕上.在锁屏上,还是在桌面上.Toast 应该被视为一种邀请,邀请你返回你的应用以关注一些有趣的内容. 我们知道,在win8平台,toast通知会有诸多模板,而到了win10平台,你依然可以使用这些模板,而win10也提供了一种通用性通知.我们来看一下例子. <toast> <visual> <binding template=

【UWP通用应用开发】使用Toast通知与动态磁贴

使用Toast通知示例 前面我们使用了MessageDialog来作为弹窗,这里来介绍一个更加高大上的Toast通知. Toast通知本质上动力是由XML来提供的,一开始我还不相信不知道XML原来有这么大的威力.现在就来看看和Toast相关的知识. 1)实例化ToastNotification类. ToastNotification toast1 = new ToastNotification(xdoc); 2)使用ToastNotificationManager来管理Toast通知,包括添加.

【万里征程——Windows App开发】使用Toast通知

前面我们使用了 MessageDialog来作为弹窗,这里来介绍一个更加高大上的Toast通知. Toast通知本质上动力是由XML来提供的,一开始我还不相信不知道XML原来有这么大的威力.现在就来看看和Toast相关的知识. 1)实例化ToastNotification类. ToastNotification toast1 = new ToastNotification(xdoc); 2)使用ToastNotificationManager来管理Toast通知,包括添加.展示.移除.获取通知等

快速构建Windows 8风格应用34-构建Toast通知

原文:快速构建Windows 8风格应用34-构建Toast通知 引言 开发过WindowsPhone应用或者使用过WindowsPhone手机的开发者都知道,我们会收到一些应用的提示信息,这些提示信息出现在手机的上端,并且停留几秒钟后会自动消失,当然如果我们点击弹出的信息会自动运行相应的应用程序,这种提示信息我们叫做通知. 其实Windows 8 Store 应用也借鉴了Windows Phone上的提示信息,我们开发人员可以使自己应用程序在合适时间弹出相关提示信息,那么这些Windows 8