上篇文章我们将了大体的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控件中。

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

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

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

    前篇文章我们写了关于Toast的前台激活,那么接下来就讲一讲它的后台激活.当通知出现时并不会出现app的界面,但是app能在后台获取到通知中的信息. 关于xaml和Toast通知架构我们在这里就不再赘 ...

  2. 【WIN10】Toast 通知

    DEMO下載:http://yunpan.cn/cFSLZQf5ePeTV  访问密码 1fce 1.顯示通知 使用xml確定通知內容. string xml = "<toast la ...

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

    老周最近热衷于讲故事,接下来还是讲故事时间. 有人问我:你上大学的时候,有加入过学生会吗?读大学有没有必要加入学生会? 哎哟,这怎么回答呢,从短期来说,加入学生会有点用,至少可以娱乐一下,运气好的话, ...

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

    有关后台任务的使用,估计大伙伴们不会陌生,而且老周曾经在某文中也简单讲述过.说到后台任务,老周想到了一个问题:有人问,后台任务一定要独立写到一个Runtime组件中吗,能不能写到主项目的代码中? 老周 ...

  5. Windows10自适应和交互式toast通知[1]

    阅读目录: 概述 toast通知的结构 视觉区域(Visual) 行为(Actions) 特定场景下的Toast通知 带多内容的通知 带行为的通知(例子1) 带行为的通知(例子2) 带文本输入框和行为 ...

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

    Toast 通知概述(Windows 运行时应用) 你的应用要想通过 Toast 通知通信,必须在应用的清单文件中声明它支持 Toast.Toast 通知可包含文本,并且 Windows 上的 Toa ...

  7. Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构

    分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...

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

    老规矩,在开始之前老周先讲个故事. 话说公元2015年7月20日,VS 2015发布.于是,肯定有人会问老周了,C#6有啥新特性,我学不来啊.学不来的话你应该检讨.老周比较保守地计算一下,学会C# 6 ...

  9. 【Win10开发】Toast通知

    Toast 通知是一种发送给用户的暂时消息,包含相关的.具有时效性的信息,并且提供对应用中相关内容的快速访问.它可显示你是在另一个应用中.在“开始”屏幕上.在锁屏上,还是在桌面上.Toast 应该被视 ...

随机推荐

  1. .NET单元测试的艺术-2.核心技术

    开篇:上一篇我们学习基本的单元测试基础知识和入门实例.但是,如果我们要测试的方法依赖于一个外部资源,如文件系统.数据库.Web服务或者其他难以控制的东西,那又该如何编写测试呢?为了解决这些问题,我们需 ...

  2. Docker:Ubuntu下的安装

    Docker是什么 Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托 管在 GitHub 上, 基于Go语言并遵从Apache2. ...

  3. [OpenGL][SharpGL]用Polygon Offset解决z-fighting和stitching问题

    [OpenGL][SharpGL]用Polygon Offset解决z-fighting和stitching问题 本文参考了(http://www.zeuscmd.com/tutorials/open ...

  4. Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明

    前不久微信上线了个性化菜单接口,Senparc.Weixin SDK也已经同步更新. 本次更新升级Senparc.Weixin.MP版本到v13.5.2,依赖Senparc.Weixin版本4.5.4 ...

  5. Linux Hadoop2.7.3 安装(单机模式) 二

    Linux Hadoop2.7.3 安装(单机模式) 一 Linux Hadoop2.7.3 安装(单机模式) 二 YARN是Hadoop 2.0中的资源管理系统,它的基本设计思想是将MRv1中的Jo ...

  6. iOS-网络基础

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  7. iOS-数据持久化详细介绍

    1.iOS-数据解析XML解析的多种平台介绍 2.iOS-数据持久化基础-JSON与XML数据解析 3.iOS-数据持久化基础-沙盒机制 4.   数据持久化的几种方式: 1)plist(XML属性列 ...

  8. hbase 1.1.7在centor6.5安装过程

    1.自己安装的最新版一直没成功,换成了1.1.7稳定版的.中间遇到的问题记录下 1) jdk 用的1.7版本的,安装过程省略. 2)下载hbase  zip包:https://mirrors.tuna ...

  9. 数据结构与算法JavaScript (四) 串(BF)

    串是由零个或多个字符组成的有限序列,又叫做字符串 串的逻辑结构和线性表很相似的,不同的是串针对是是字符集,所以在操作上与线性表还是有很大区别的.线性表更关注的是单个元素的操作CURD,串则是关注查找子 ...

  10. MVC4做网站后台:栏目管理3、删除栏目与左侧列表菜单

    一.左侧列表菜单 打开视图Menu.cshtml,增加部分见红框 在category中添加脚本 //栏目菜单加载完毕函数 function CategoryMenu_Ready() { $('#cat ...