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

简介: 原文:UWP Windows10开发更新磁贴和动态更新磁贴下面将介绍两种方式如何在windows10 uwp开发中如何更新应用磁贴: 实际上windows的磁贴就是用xml实现的,你只需要创建相应格式的xml就可以实现动态磁贴了 一,手动更新磁贴 二,轮询更新磁贴 【第一种方式】手动更新磁...
原文: 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. 谢谢!
目录
相关文章
|
C# Windows 开发工具
WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit)
原文 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) Windows Community Toolkit 再次更新到 5.0。
1909 0
|
API Windows 开发工具
使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题
原文 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题 虽然微软宣称 Windows 10 将是最后一个 Windows 版本,但由于年代跨越实在太久远,兼容性依然是避不开的问题。
1851 0
|
C++ Windows C#
自动启动 Windows 10 UWP 应用
原文: https://docs.microsoft.com/zh-cn/windows/uwp/xbox-apps/automate-launching-uwp-apps 简介 开发人员有多种选项可用于实现自动启动通用 Windows 平台 (UWP) 应用。
1410 0
UWP中String类型如何转换为Windows.UI.Color
原文:UWP中String类型如何转换为Windows.UI.Color 我在学习过程中遇到的,我保存主题色为string,但在我想让StatusBar随着主题色变化时发现没法使用。 1 ThemeColorHelper tc = new ThemeColorHelper(); 2 StatusBar statusbar = StatusBar.
1069 0
|
Windows Web App开发 API
UWP 判断windows mobile是使用的实体键还是虚拟按键
原文:UWP 判断windows mobile是使用的实体键还是虚拟按键 最近在写启动屏幕,发现虚拟按钮会挡住,启动屏幕的最下面的元素,大概有50 px。可是有什么办法知道手机是用的实体键还是虚拟按键吗? 如下图。
1123 0
|
自然语言处理 Windows 存储
UWP Windows历史上最漂亮的UWP框架出炉!!!
原文:UWP Windows历史上最漂亮的UWP框架出炉!!! UWP Windows历史上最漂亮的UWP框架出炉!!!   本框架基于微软的开源项目WTS开发,并在其基础上增加了FDS(流畅设计元素,高光、亚克力等)、多语言系统、沉浸式体验(扩展内容到标题栏) 同时又保留了WTS的强大扩展性,你可以添加你所需要的页面,来快速定制自己个性化的App。
1436 0
|
Windows 数据格式 XML