UWP Windows10开发更新磁贴和动态更新磁贴

原文:UWP Windows10开发更新磁贴和动态更新磁贴

下面将介绍两种方式如何在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[0].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. 谢谢!
时间: 2024-08-18 01:36:30

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

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

原文:UWP Windows10开发获取设备位置(经纬度) 1.首先要在UWP项目的Package.appxmanifest文件中配置位置权限,如下图所示: 2.Package.appxmanifest后选择第三个选项卡,勾选位置权限(Location) 打开 3.然后创建一个LocationManage类,包括以下代码: public async static Task<Geoposition> GetPosition() { //请求对位置的访问权 var accessStatus = a

iOS 利用 framework 进行动态更新

前言 目前 iOS 上的动态更新方案主要有以下 4 种: HTML 5 lua(wax)hotpatch react native framework 前面三种都是通过在应用内搭建一个运行环境来实现动态更新(HTML 5 是原生支持),在用户体验.与系统交互上有一定的限制,对开发者的要求也更高(至少得熟悉 lua 或者 js). 使用 framework 的方式来更新可以不依赖第三方库,使用原生的 OC/Swift 来开发,体验更好,开发成本也更低. 由于 Apple 不希望开发者绕过 App

通过XML数据交换实现XForm DataInstance的动态更新

XForms 是下一代 Web 表单的数据处理技术,它通过 Data Instance(数据实例),定义表单上所有和后端应用关联的数据信息,实现各种数据处理,实现了 MVC 中的数据 Modle 与 View 和 Controller 的清晰分离.本文首先 IBM Lotus Forms 进行简单介绍,然后结合作者的项目开发经验,提出了 XForms 在实际表单应用中的一个典型的动态数据交换的应用场景.针对该应用场景,将由浅入深的为大家介绍通过 XForm 的 XML 数据交换,实现 DataI

WF中的动态更新

关于动态更新 在开发工作流时,我们会在工作流设计器中通过拖拽活动,设置属性等等来设计我们的工作流,我们 希望我们在设计时定义好的工作流在运行时是不变的.但在实际中我们往往需要在运行时来改变工作流 的架构,例如我们已经定义好的流程在没有结束时我们需要增加一个流程点,这个时候我们就需要使用 动态更新来现实.在WF中我们也可以对正在运行的工作流实例添加删除活动,修改活动,规则条件等. 当动态更新应用到工作流实例上时,只影响当前的工作流实例.其他的和将来的都不受影响,仍然使用 原始的工作流定义. 动态更

JVM TI学习(2) 如何动态更新JVM中的class文件

在一个运营系统中,如果出现业务方法变更,而我们使用的应用服务器不支持热部署的话,那么重启可能是更新的唯一选择.目前多数应用服务器不支持热部署,包括生产模式下的weblogic.之所以说是生产模式,weblogic在开发模式下是支持这种动态更新的,即我们只要替换部署目录下的类文件,重新访问时可以看到新业务方法生效,而且即使在生产模式下,weblogic也能"支持"动态更新,但做法上比较麻烦,需要使用version信息控制应用,这个功能weblogic9就开始提供,但好像很少有客户这么用过

通用JdbcDao更新,增加动态数据源,支持权重和读写分离

版本:V1.2.3 本次更新增加了动态数据源的支持,可以十分方便的在配置文件中将原来的单数据源修改成动态数据源,而无须修改任何的业务代码. 下面来看看如何使用动态数据源,关于动态数据源的实现,请看这里:Spring实现动态数据源,支持动态添加.删除和设置权重及读写分离 第一步 当然是在spring中声明数据源bean了 <bean id="dynamicDataSource" class="com.dexcoder.assistant.persistence.Dynam

iOS中动态更新补丁策略JSPatch运用基础二

iOS中动态更新补丁策略JSPatch运用基础二 一.引言     上篇博客中介绍了iOS开发中JSPatch引擎进行动态热修复的一些基础功能,其中包括向Objective-C类中添加类方法与成员方法.添加临时成员变量,使用JavaScript调用原生的Objective-C属性和方法等.本篇博客将基于上一篇继续介绍Objective-C中的一些特殊数据类型在JavaScript文件中的使用方法,博客中大部分内容扩展自JSPatch开源git的wiki:https://github.com/ba

Android编程实现动态更新ListView的方法_Android

本文实例讲述了Android编程实现动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListView.今天的例子就是通过Handler AsyncTask两种方式来动态更新ListView.从今天起,每次学习的源代码都会打包上传,方便各位同学学习,注册帐号即可下载. 布局main.xml: <?xml

Android零基础入门第44节:ListView数据动态更新

原文:Android零基础入门第44节:ListView数据动态更新    经过前面几期的学习,关于ListView的一些基本用法大概学的差不多了,但是你可能发现了,所有ListView里面要填充的数据都是静态的,但在实际开发中,这些数据往往都是动态变化的,比如数据内容发生改变.增加几行.或者删除几行,这就涉及到ListView数据的更新问题.     接下来通过一个简单的示例程序来学习ListView的数据更新.     继续使用WidgetSample工程,在app/main/res/lay