一:需求

一款好看好用的应用,对于UWP来说,动态的磁贴必不可少。

二:TileUpdateManager类 和TileUpdater类

如果需要更改或更新应用的磁贴,那么首先需要获得TileUpdater对象,顾名思义,TileUpdater就是磁贴的更新器。

通过TileUpdateManager类得到TileUpdater对象

TileUpdater tileUpdater = TileUpdateManager.CreateTileUpdaterForApplication();

三:TileUpdater 磁贴更新器类

3.1 清空应用的磁贴 

TileUpdater 有一个clear()方法用于清空当前应用的磁贴的内容,恢复为默认模式,默认就是一个软件的logo。该方法可以用于软件内点击按钮关闭动态磁贴的功能。

//删除所有更新并将平铺导致以显示其默认内容(如应用程序清单所声明)。
public void Clear();
tileUpdater.Clear();

 3.2  更新磁贴

 TileUpdater 有一个Update() 方法,用于更新磁贴,可以说是比较关键的方法了。先来看看方法的定义。

// 将内容或外观的更改应用于图块。
// notification:
// 为平铺的内容提供新的 XML 定义的对象。
public void Update(TileNotification notification);

参数需要提供一个 TileNotification 对象。查看TileNotification类的构造函数可以发现

public TileNotification(XmlDocument content);
TileNotification类的构造函数需要传递进一个XmlDocument对象。

实际上磁贴的模板就是一个xml的文件。TileNotification 对象就是用来放要更新的磁贴的模板。

四:磁铁模板

磁贴的模板可以用微软预定的磁贴模板,或者自己定义模板。

 4.1获取微软预设的磁贴模板

XmlDocument xml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquare150x150Block);
TileTemplateType里有很多微软预设的磁贴的模板,主要是根据不同的磁贴大小,微软自己预设的磁贴。

4.2 创建自适应磁贴模板
自适应磁贴是win10一项新的功能,允许我们针对不同的磁贴大小设定模板。 既然磁贴的模板是xml格式的,那么它就是标记性语言。你可以像xaml那样,或者用类的方式定义。
请安装名为 Microsoft.Toolkit.Uwp.Notifications 的 NuGet 程序包(搜索“notifications uwp”) xml格式:
<tile>
<visual> <binding template="TileSmall">
<text>Small</text>
</binding> <binding template="TileMedium">
<text>Medium</text>
</binding> <binding template="TileWide">
<text>Wide</text>
</binding> <binding template="TileLarge">
<text>Large</text>
</binding> </visual>
</tile>

c#格式

TileContent content = new TileContent()
{
Visual = new TileVisual()
{
TileSmall = new TileBinding()
{
Content = new TileBindingContentAdaptive()
{
Children =
{
new AdaptiveText() { Text = "Small" }
}
}
}, TileMedium = new TileBinding()
{
Content = new TileBindingContentAdaptive()
{
Children =
{
new AdaptiveText() { Text = "Medium" }
}
}
}, TileWide = new TileBinding()
{
Content = new TileBindingContentAdaptive()
{
Children =
{
new AdaptiveText() { Text = "Wide" }
}
}
}, TileLarge = new TileBinding()
{
Content = new TileBindingContentAdaptive()
{
Children =
{
new AdaptiveText() { Text = "Large" }
}
}
}
}
};

这个自适应的磁贴也仅仅是针对四种状体的磁贴定义的。因为微软的磁贴也只能有(小,中,宽,大)四种形态。分别对应(TileSmall,TileMedium ,TileWide,TileLarge)。在每种状态里,添加你需要内容即可。你可以添加PeekImage,BackgroundImage,AdaptiveText等。

如果你用的是c#写的磁贴模板,有一个TileContent.Getxml() 方法用于将c#代码转化成xml。

这样你再创建一个TileNotification对象,通过TileUpdater.update()就可以更新磁贴了。

var xmlDocument= content.GetXml();

TileNotification tileNotification = new TileNotification(xmlDocument);
TileUpdater tileUpdater = TileUpdateManager.CreateTileUpdaterForApplication();
tileUpdater.Update(tileNotification);

微软开发者文档地址:https://docs.microsoft.com/zh-cn/windows/uwp/controls-and-patterns/tiles-and-notifications-create-adaptive-tiles

-------some words-------

1.Notification 通知

2..tile 磁贴

---------the  end----------

UWP 磁贴设置的更多相关文章

  1. win10 UWP 应用设置

    win10 UWP 应用设置 简单的把设置需要的,放到微软自带的LocalSettings LocalSettings.Values可以存放几乎所有数据 如果需要存放复合数据,一个设置项是由多个值组成 ...

  2. 【转载】UWP应用设置和文件设置:科普

    数据有两个基本的分类,应用数据和用户数据,而用户数据则为由用户拥有的数据,如文档,音乐或电子邮件等,下面将大致的介绍一下应用数据的基本操作. 应用数据:应用数据包含APP的状态信息(如运行时状态,用户 ...

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

    下面将介绍两种方式如何在windows10 uwp开发中如何更新应用磁贴: 实际上windows的磁贴就是用xml实现的,你只需要创建相应格式的xml就可以实现动态磁贴了 一,手动更新磁贴 二,轮询更 ...

  4. Windows Phone 十四、磁贴通知

    磁贴(Tile) Windows Phone 磁贴种类: 小尺寸 SmallLogo:71x71: Square71x71 中等 Logo:150x150: Square150x150 宽 WideL ...

  5. [UWP小白日记-8]一些零碎的东西

    设置启动窗口大小 直接上代码了没什么好解释的了,既然能设置最小,那铁定就能设置最大 public MainPage() { //设定窗口启动显示大小 ApplicationView.Preferred ...

  6. win10 uwp 入门

    UWP是什么我在这里就不说,本文主要是介绍如何入门UWP,也是合并我写的博客. 关于UWP介绍可以参见:http://lib.csdn.net/article/csharp/32451 首先需要申请一 ...

  7. UWP: 在 UWP 中使用 Entity Framework Core 操作 SQLite 数据库

    在应用中使用 SQLite 数据库来存储数据是相当常见的.在 UWP 平台中要使用 SQLite,一般会使用 SQLite for Universal Windows Platform 和 SQLit ...

  8. .NET Core学习笔记(2)—— WPF使用UWP Custom Control

    自.NET Core 3.0开始,某软加入了对WPF的支持.同时对XAML Islands也做了进一步加强.在.NET Core 3.0之前,我们只能在WPF程序中,通过两种方式有限制地使用Stand ...

  9. 2018-2-13-win10-UWP-应用设置

    title author date CreateTime categories win10 UWP 应用设置 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17: ...

随机推荐

  1. Java中迭代器Iterator的使用

    Java集合类中Map接口下的相关类并没有像Collection接口的相关类一样实现get()方法,因此在要实现遍历输出的场景中没法直接用get()方法来取得对象中的数据,但Java本身提供了另一种遍 ...

  2. MySQL索引优化实例说明

    下面分别创建三张表,并分别插入1W条简单的数据用来测试,详情如下: [1] test_a 有主键但无索引   CREATE TABLE `test_a` (   `id` int(10) unsign ...

  3. RG_4

    集训前半段马上就要结束了. 很多作业等待着我. 真希望作业君不喜欢我.

  4. JVM(五)内存(Heap)分配

    前面的两小节,我分享了一下JVM的垃圾回收算法和垃圾回收器,本节中,我们来看看JVM的内存分配到底是如何进行的,作为对前面两节内存回收的补充. 从前面的内存回收中我们了解到,Hotspot JVM中的 ...

  5. 看源码和写demo是一种比较容易提升的方式

    github就是要这么用才行.看别人的源码,就能了解到很多规范,而写demo,就是自己写出自己的代码.莫欺少年穷

  6. 实例讲解webpack的基本使用第四篇

    这一篇来讲解一下webpack的loader的使用,用webpack打包文件,css,img,icon等都需要下载安装对应的loader文件,并且写好配置项,才可以进行打包,废话不多说,直接开始实战. ...

  7. Android在 普通类(非Activity,多数为Adapter) 中 传输数据为空值 解决方法 :在startActivity 用 intent传输数据

    这是bundle是传输不了数据的,获取到 出现这种情况的原因是非activity类中不存在Context,而在活动中传输数据时需要Context. 我收集到了两种解决方法. 1. 在调用该Adapte ...

  8. 支持向量机(五)SMO算法

    11 SMO优化算法(Sequential minimal optimization) SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规 ...

  9. Python面试题之copy/deepcopy详解

    copy和deepcopy有什么区别? http://blog.csdn.net/qq_32907349/article/details/52190796 http://iaman.actor/blo ...

  10. python之decode、encode及codecs模块

    一.先说说编解码问题 编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码. Eg: str ...