在Windows 10通常是使用Toast通知方式进行的消息通知,但是在应用通知是不需要通知带有音效的,但是又不能在系统通知中心留下记录,那么需要监听ToastNotification实例的Dismissed事件,利用ToastNotificationManager.History.Remove(toastTag)实现Toast通知在之后消失。
但是在PC上使用是由于通知中心在右下角,对用户可能不是太友好。
所以可以通过Popup+UserControl实现应用内的消息通知。当然实现方法也有很多,用处也不知消息通知,例如:[模态框进度指示器的实现](http://edi.wang/post/2016/2/25/windows-10-uwp-modal-progress-dialog) 。
UWP中实现时就是布置好UserControl的模板,然后延迟一秒之后执行淡出动画。

  1. <UserControl.Resources>
  2. <Storyboard x:Name="Notification" >
  3. <DoubleAnimationUsingKeyFrames Storyboard.TargetName="NotificationGrid"
  4. Storyboard.TargetProperty="Opacity" BeginTime="0:0:0">
  5. <SplineDoubleKeyFrame KeyTime="0:0:0.0" Value="1"/>
  6. <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="0.0"/>
  7. </DoubleAnimationUsingKeyFrames>
  8. </Storyboard>
  9. </UserControl.Resources>
  10. <Grid Name="NotificationGrid">
  11. <Grid.RowDefinitions>
  12. <RowDefinition/>
  13. <RowDefinition/>
  14. </Grid.RowDefinitions>
  15. <Border Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,50" Padding="20,15" Background="Black" >
  16. <TextBlock Name="NotificationContent" TextWrapping="Wrap" Foreground="#daffffff"></TextBlock>
  17. </Border>
  18. </Grid>

然后在cs中加入三个成员变量,分别是存储提示内容,自定延迟时间,还有就是用来显示的Popup类型的成员变量。
myNotification.xaml.cs

  1. public sealed partial class myNotification : UserControl
  2. {
  3. private string content;
  4. private TimeSpan showTime;
  5. private Popup popup;
  6. private myNotification()
  7. {
  8. this.InitializeComponent();
  9. this.popup = new Popup();
  10. this.Width = Window.Current.Bounds.Width;
  11. this.Height = Window.Current.Bounds.Height;
  12. popup.Child = this;
  13. this.Loaded += Notification_Loaded;
  14. this.Unloaded += Notification_Unloaded;
  15. }
  16. public myNotification(string content,TimeSpan showTime):this()
  17. {
  18. this.content = content;
  19. this.showTime = showTime;
  20. }
  21. public myNotification(string content):this(content,TimeSpan.FromSeconds())
  22. {
  23.  
  24. }
  25. public void show()
  26. {
  27. this.popup.IsOpen = true;
  28. }
  29. private void Notification_Unloaded(object sender, RoutedEventArgs e)
  30. {
  31. Window.Current.SizeChanged -= Current_SizeChanged;
  32. }
  33.  
  34. private void Notification_Loaded(object sender, RoutedEventArgs e)
  35. {
  36. NotificationContent.Text = this.content;
  37. this.Notification.BeginTime = this.showTime;
  38. this.Notification.Begin();
  39. this.Notification.Completed += Notification_Completed;
  40. Window.Current.SizeChanged += Current_SizeChanged;
  41. }
  42.  
  43. private void Current_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
  44. {
  45. this.Width = e.Size.Width;
  46. this.Height = e.Size.Height;
  47. }
  48.  
  49. private void Notification_Completed(object sender, object e)
  50. {
  51. this.popup.IsOpen = false;
  52. }
  53. }

然后在MainPage.xaml中加入一个button,并加入click事件来显示通知。
在click事件中加入:

new myNotification("Hello Wrold").show();

运行效果:

UWP消息通知的更多相关文章

  1. [UWP]实现一个轻量级的应用内消息通知控件

    在UWP应用开发中,我们常常有向用户发送一些提示性消息的需求.这种时候我们一般会选择MessageDialog.ContentDialog或者ToastNotification来完成功能. 但是,我们 ...

  2. 使用 Windows10 自定义交互消息通知

    消息通知是最常用的应用功能之一了,但是由于平台的差异,IOS Android 以及 Windows 都有其特殊性,Android开发者在国内常常都是使用三方的一些推送服务,或者是使用自建的服务器为应用 ...

  3. Redis系列二之事务及消息通知

    一.事务 Redis中的事务是一组命令的集合.一个事务中的命令要么都执行,要么都不执行. 1.事务简介 事务的原理是先将一个事务的命令发送给Redis,然后再让Redis依次执行这些命令.下面看一个示 ...

  4. Redis笔记(六)Redis的消息通知

    Redis的消息通知可以使用List类型的LPUSH和RPOP(左进右出),当然更方便的是直接使用Redis的Pub/Sub(发布/订阅)模式. >>使用List实现队列 使用列表类型的L ...

  5. Android中的消息通知(NotificationManager和Notification)

    下面来谈谈notification,这个notification一般用在电话,短 信,邮件,闹钟铃声,在手机的状态栏上就会出现一个小图标,提示用户处理这个通知,这时手从上方滑动状态栏就可以展开并处理这 ...

  6. Android消息通知(notification)和PendingIntent传值

    通知栏的自定义布局:转:http://blog.csdn.net/vipzjyno1/article/details/25248021 拓展 实现自定义的通知栏效果: 这里要用到RemoteViews ...

  7. cordova的android notify消息通知插件

    最近在学习用CORDOVA(PHONEGAP)结合SENCHA TOUCH开发应用,想实现一个安卓下的消息通知功能,这个可以通过CORDOVA的插件来实现. 插件目录结构如下: notifyplugi ...

  8. Unity3D研究院之IOS本地消息通知LocalNotification的使用

    原地址:http://www.xuanyusong.com/archives/2632   现在的游戏里一般都会有本地消息,比如每天定时12点或者下午6点告诉玩家进入游戏领取体力.这种东西没必要服务器 ...

  9. HTML 5的消息通知机制

    译文来源:http://www.ido321.com/1130.html 原文:HTML 5 Notification 译文:HTML 5 的消息通知机制 译者:dwqs HTML 5 已经被应用到W ...

随机推荐

  1. android 开发项目笔记1

    1.xml文件中@string/name   @+id/name  @id/name  的用法与区别: @string/name  一般长用于从别的资源中获取键值对 @+id/name  为控件指定名 ...

  2. *HDU1325 并查集

    Is It A Tree? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  3. Java中&&和&的区别

    Java中&&和&都是表示与的逻辑运算符,都表示逻辑运输符and,当两边的表达式都为true的时候,整个运算结果才为true,否则为false. &&的短路功能 ...

  4. Spring boot 学习记录

    java的三种配置方式 基于xml的配置 基于注解的配置 基于java的配置 Spring boot推荐的配置方式:java配置+注解配置 一.注解 SpringBootApplication :等价 ...

  5. MyBatis实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  6. php数字索引数组去重及恢复索引

    $tmp = array('a','b','c','a'); $tmp = array_values(array_unique($tmp)); print_r($tmp);exit; //输出 Arr ...

  7. Android NDK常见配置问题的解决方案

    添加NDK包时出现"Not a valid NDK directory" 在解压的android-ndk-rxxx文件夹中新建一个txt文件,将名字包括后缀更改为ndk-build ...

  8. 支付宝地铁SDK使用失败记录

    使用PHP版的SDK,没处理好,发现有个test/TestImage.php的测试文件,开始改,发现状态码$request -> getCode()一直为0,一路调试上去,发现是getConte ...

  9. CXF Spring开发WebService,基于SOAP和REST方式 【转】

    官网示例 http://cxf.apache.org/docs/writing-a-service-with-spring.html http://cxf.apache.org/docs/jax-rs ...

  10. Ubantu Linux 环境下编译c++程序

    先在文件中新建一个a.cpp文件,在里面编写程序, 然后打开终端输入下面命令即可; $ g++ a.cpp -o b ///编译a.cpp 然后把编译之后的.exe文件存入b中 $ ./b ///执行 ...