博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【万里征程——Windows App开发】动态磁贴
阅读量:6243 次
发布时间:2019-06-22

本文共 2738 字,大约阅读时间需要 9 分钟。

动态磁贴是什么,相信大家用了这么久的Windows 8/8.1/10早就非常了解了吧。

像什么小磁贴、中磁贴、宽磁贴、大磁贴,还有这里的应用商店Logo等,大家在下面根据不同的分辨率选择合适的图片就好啦。

这里写图片描述

下面来做一个更新磁贴页面的功能,这是页面XML部分。

在后台代码的Main函数中,获取TileTemplateType枚举并绑定到ComboBox上。

var itemsTile = Enum.GetNames(typeof(TileTemplateType));this.comboBoxTile.ItemsSource = itemsTile;

下面的代码和前面的Toast真的非常类似,所以我才把这两节连在一起来写了。Button按钮的Click事件中,和之前一样建一个XML,然后加载到TileNotification类的实例中。最后就是TileUpdateManager类,也就是磁贴更新。

private void btnTile_Click(object sender, RoutedEventArgs e){    if (this.textBoxXML.Text == "")          return;    XmlDocument xdoc = new XmlDocument();    xdoc.LoadXml(this.textBoxXML.Text);    TileNotification tileNotifi = new TileNotification(xdoc);    TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotifi);}private void comboBoxTile_SelectionChanged(object sender, SelectionChangedEventArgs e){    TileTemplateType tileTemplate = (TileTemplateType)Enum.Parse(typeof(TileTemplateType),        this.comboBoxTile.SelectedItem as string);    XmlDocument xdoc = TileUpdateManager.GetTemplateContent(tileTemplate);    this.textBoxXML.Text = xdoc.GetXml();}

当然了,如果你的APP不满足于一个磁贴,你也可以创建第二个磁贴哟!

依旧和Toast通知的XML类似,它也有好多属性的……

Arguments:使用该字符串参数在通过次要磁贴启动应用程序时会传递给Application类的OnLaunched方法,这样一来应用程序就可以根据传入的参数来执行特定的操作。

BackgroundColor:设置磁贴的背景色。

DisplayName和ShortName:设置显示在磁贴上的文本。

Logo等:设置磁贴的图标,用Uri。

ForegroundText:磁贴上文本的颜色,可用的选项有深色、浅色等。

TileID:设置磁贴的唯一标识ID,创建新磁贴前用SecondaryTile.Exists判断是否已经存在。

在添加第二磁贴的Button的Click事件中:

private async void btnCreateTile(object sender, RoutedEventArgs e){    if(SecondaryTile.Exists(textTileID.Text))    {        textBlockMsg.Text="该ID磁贴已经存在";        return ;    }    Uri uriImg=new Uri("ms-appx:///Assests/uriImg.png");    ……    ……    // 创建第二磁贴    SecondaryTile secTile=new SecondaryTile();    this.Tag=secTile;    secTile.DisplayName=textBlockDisplayName.Text;    secTile.TileID=textBlockID.Text;    secTile.Arguments="second"; // 在后面有用到    // 设置图标    secTile.VisualElements.BackgroundColor=Windows.UI.Colors.Gold;    ……    ……    bool r=await secTile.RequestCreateAsync();    textBlockMsg.Text=r == true ?"磁贴创建成功啦.":"磁贴创建失败了哎.";  // 返回测试结果

如果希望点击第二磁贴导航到特定的页面,就需要重写该页面的OnNavigatedTo方法。

preteced async override void OnNavigatedTo(NavigationEventArgs e){    if(e.Parameter is Windows.ApplicationModel.Activation.LaunchActivatedEventArgs)    {        var arg=e.Parameter as Windows.ApplicationModel.Activation.LaunchActivateEventArgs;        ……    }}if(rootFrame.Content==null){    if(e.Arguments=="second")        rootFrame.Navigate(typeof(OtherPage),e);    else        rootFrame.Navigate(typeof(MainPage));}

这里的参数”second”就是上面设置那个Arguments哦,它的作用就在于这里呢。



感谢您的访问,希望对您有所帮助。 欢迎大家关注、收藏以及评论。


为使本文得到斧正和提问,转载请注明出处:


你可能感兴趣的文章
Linux有问必答:如何修复"fatal error: jsoncpp/json/json.h: No such file..."
查看>>
阿里数据库内核月报:2016年11月
查看>>
简单了解Disruptor(一)
查看>>
编写更好 Bash 脚本的 8 个建议
查看>>
Mavens实战 1.5小结
查看>>
《 硬件创业:从产品创意到成熟企业的成功路线图》——第1章 硬件创业概述 1.1 早期的创客们...
查看>>
《Android游戏开发详解》——第3章,第3.5节继承
查看>>
《Docker生产环境实践指南》——2.6 编排
查看>>
Docker学习(一)
查看>>
云端架美购,精品零距离
查看>>
Java设计模式--享元模式
查看>>
码栈开发手册(五)---可视化方式开发(模块详解--浏览图)
查看>>
每天一个设计模式之装饰者模式
查看>>
基于自定义日志打印的UDAF调试
查看>>
JVM源码分析之Metaspace解密
查看>>
CSS 各种定位(position)方式的区别
查看>>
每周聚划算 超值软件汇总:云市场迎新年大礼包 专场五折封顶劲省2100元
查看>>
【区块链之技术进阶】扒一扒某乎上面对于区块链的理解(二)
查看>>
如何从PostgreSQL源码分析哪些操作需要超级用户权限 - 阿里云rds superuser提供了哪些权限...
查看>>
用java进行面向对象编程,面向对象是什么意思
查看>>