下面将介绍两种方式如何在windows10 uwp开发中如何更新应用磁贴:

实际上windows的磁贴就是用xml实现的,你只需要创建相应格式的xml就可以实现动态磁贴了

一,手动更新磁贴

二,轮询更新磁贴

【第一种方式】手动更新磁贴

  1. 创建一个文本框和一个按钮,当按钮点击时,磁贴就会显示文本框的文本
  2. 给按钮绑定一个事件,代码如下
private void changeBtn_Click(object sender, RoutedEventArgs e)
{
//获取模板
var tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquare150x150Text01);
//获取标签名为text的元素值
var tileAttributes = tileXml.GetElementsByTagName("text");
//将获取的元素值追加一个值
tileAttributes[].AppendChild(tileXml.CreateTextNode(titleBox.Text));
//创建一个磁贴类,将xml数据填充到磁贴中
var tileNotification = new TileNotification(tileXml);
//向磁贴更新
TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);
}

这样,当点击按钮时,应用磁贴就会显示文本框输入的值

【第二种方式】轮询更新磁贴

  1. 首先你得有台服务器,或者你也可以解析第三方的数据为磁贴xml格式,然后再进行轮询
  2. 下面介绍用MVC做服务器端,然后uwp再每半小时向服务器获取一次数据

如果你不了解MVC你可以跳过此步骤,然后看下面如何通过网络获取数据

  1. 创建一个MVC项目
  2. 添加一个Hello控制器

并在控制器的Index默认方法里添加以下数据:

public ActionResult Index()
{
ViewBag.Title = "巴黎发生恐袭";
ViewBag.Content = "数百人遇难";
ViewBag.Type = "新闻";
return View();
}

然后再Hello视图中添加Index视图,把布局页模板页什么的勾选去掉,然后新建了一个.cshtml文件,最后你要把Index.cshtml中的所有html数据全部清空替换成以下文档结构

<tile>
<visual version="2">
<binding template="TileSquare150x150Text01" fallback="TileSquareText01">
<text id="1">@ViewBag.Title</text>
<text id="2">@ViewBag.Content</text>
<text id="3">@ViewBag.Type</text>
<text id="4">@DateTime.Now.ToLongTimeString()</text>
</binding>
</visual>
</tile>

待会再介绍模板问题

最后一步,回到UWP项目中,创建一个按钮(当按下这个按钮时,以后磁贴会按照你设定时间进行自动轮询更新),添加一个单击事件事件,添加以下代码:

private void AutoUpdate_Click(object sender, RoutedEventArgs e)
{
//设置一个Uri类型变量保存服务器的xml地址
var tileContent = new Uri("http://localhost:61341/UWP/Index");
//设置轮询时间变量为半小时,也可以设置其他时间
var requestedInterval = PeriodicUpdateRecurrence.HalfHour;
//创建磁贴更新实例
var updater = TileUpdateManager.CreateTileUpdaterForApplication();
//开始轮询更新,传入服务器磁贴xml文件地址和轮询时间
updater.StartPeriodicUpdate(tileContent, requestedInterval);
}

这样一来你的应用就实现了自动磁贴更新的功能。

下面我们再来讨论一下磁贴模板问题:

  1. 不同磁贴尺寸有不同的格式,你要为每种磁贴同时设置不同模板
  2. 模板有固定格式和不同资源类型,你可以参考:https://msdn.microsoft.com/zh-cn/library/windows/apps/br212859.aspx
  3. 谢谢!

UWP Windows10开发更新磁贴和动态更新磁贴的更多相关文章

  1. UWP Windows10开发获取设备位置(经纬度)

    1.首先要在UWP项目的Package.appxmanifest文件中配置位置权限,如下图所示: 2.Package.appxmanifest后选择第三个选项卡,勾选位置权限(Location) 打开 ...

  2. 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView

    本文面向Android初级开发者,有一定的Java和Android知识即可. 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新List ...

  3. JSPatch – 动态更新iOS APP

    原文:http://blog.cnbang.net/works/2767/ JSPatch是最近业余做的项目,只需在项目中引入极小的引擎,就可以使用JavaScript调用任何Objective-C的 ...

  4. iOS 利用 Framework 进行动态更新

    http://nixwang.com/2015/11/09/ios-dynamic-update/ 前言 目前 iOS 上的动态更新方案主要有以下 4 种: HTML 5 lua(wax)hotpat ...

  5. IOS App动态更新

    框架 JSPatch WaxPatch react-native   方案对比 目前已经有一些方案可以实现动态打补丁,例如WaxPatch,可以用Lua调用OC方法,相对于WaxPatch,JSPat ...

  6. WPF柱状图(支持数据库动态更新)

    之前我们讲到wpf组件基类以及组件开发,现在我们围绕之前的内容去开发一个组件. 效果图请加群查看,在群共享里面. 做出这个呢  是比较繁琐的. 首先要使用我们的基类 继承基类的模板自动生成如下几个文件 ...

  7. Android UI:机智的远程动态更新策略

    问题描述 做过Android开发的人都遇到过这样的问题:随着需求的变化,某些入口界面通常会出现 UI的增加.减少.内容变化.以及跳转界面发生变化等问题.每次发生变化都要手动修改代码,而入口界面通常具有 ...

  8. 仿百度壁纸客户端(五)——实现搜索动画GestureDetector手势识别,动态更新搜索关键字

    仿百度壁纸客户端(五)--实现搜索动画GestureDetector手势识别,动态更新搜索关键字 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Frag ...

  9. JSPatch动态更新APP

    JSPatch,只需在项目中引入极小的引擎,就可以使用JavaScript调用任何Objective-C的原生接口,获得脚本语言的能力:动态更新APP,替换项目原生代码修复bug. 用途 是否有过这样 ...

随机推荐

  1. spring实战笔记6---springMVC的请求过程

    之前有一次在面试其中被问到了这个问题.当时说得不是非常清楚,有些细节的地方想不起来了.所以在这里从新回想和总结一下SpringMVC的起步.请求的运行过程. 在SpringMVC其中.跟请求(Requ ...

  2. 学习Opencv 2.4.9 (一)---Opencv + vs2012环境配置

    作者:咕唧咕唧liukun321 来自:http://blog.csdn.net/liukun321 首先获得最新的Opencv 2.4.9源代码:opencv源代码下载 一.Opencv环境变量配置 ...

  3. Boost中的Timer的使用——计算时间流逝

    使用Boost中的Timer库计算程序的运行时间 程序开发人员都会面临一个共同的问题,即写出高质量的代码完毕特定的功能.评价代码质量的一个重要标准就是算法的运行效率,也就是算法的运行时间.为了可靠的提 ...

  4. oracle sql 超长报ORA-01460错误

    程序查找数据的时候报错了: ORA-01460: 转换请求无法实施或不合理 这是什么鬼?不合理你就提嘛,报错干什么. 程序原本好好的,现在突然报错了.数据库并没有什么更改. 后来猜测是因为执行的SQL ...

  5. brctl和虚拟网桥

    1 创建空的虚拟网桥 brctl addbr br0 这个时候可以认为该虚拟网桥有多个虚拟接口,但是没有实际的网卡接口和该虚拟网桥相连的. 2 将eth0网卡连接到br0 网卡只有一个接口,这个接口是 ...

  6. wget和curl

    1 curl比wget支持更多的协议 2 wget是支持递归的,而curl不支持

  7. AngularJS 指令实践指南(二)

    这个系列教程的第一部分给出了AngularJS指令的基本概述,在文章的最后我们介绍了如何隔离一个指令的scope.第二部分将承接上一篇继续介绍.首先,我们会看到在使用隔离scope的情况下,如何从指令 ...

  8. 关于页面上输入框中 空格 、0 、NULL 的处理 示例

    ep.setPositionNum(get("positionNum").toString()); ep.setClasstype(get("classtype" ...

  9. Synchronized的使用和注意事项

    synchronized: 1.取得的锁都是对象锁,而不是把一段代码或方法(函数)当作锁: 2.多个线程访问的必须是同一个对象. 3.当一个线程执行的代码出现异常时,其所持有的锁会自动释放 4.A线程 ...

  10. JVM从理论到实践

    这里实践不是指动手写JVM,而是动手做实验,结合日常工作相关的部分,理论与实践结合从而对这块知识有更深入的认识. 随着Java10的到来,JVM这块也有不少调整改进,网上大部分内容都是过时或大部分开发 ...