【WPF】右下角弹出自定义通知样式(Notification)——简单教程
原文:【WPF】右下角弹出自定义通知样式(Notification)——简单教程

1.先看效果

2.实现

1.主界面是MainWindow

上面就只摆放一个Button即可。在Button的点击事件中需要new一个弹出的NotificationWindow。代码如下:

 public static List<NotificationWindow> _dialogs = new List<NotificationWindow>();int i = 0;private void Button_Click(object sender, RoutedEventArgs e){i++;NotifyData data = new WpfApplication1.NotifyData();data.Title = "This is Title:"+i;data.Content = "content content content content content content content ";NotificationWindow dialog = new NotificationWindow();//new 一个通知dialog.Closed += Dialog_Closed;dialog.TopFrom = GetTopFrom();_dialogs.Add(dialog);dialog.DataContext = data;//设置通知里要显示的数据dialog.Show();}private void Dialog_Closed(object sender, EventArgs e){var closedDialog = sender as NotificationWindow;_dialogs.Remove(closedDialog);}

其中NotifyData类只有两个属性分别是Title和Content,给NotificationWindow提供所要展示的消息数据。

GetTopFrom方法用来获取弹出通知框的底部应该在WorkArea(工作区)的哪个位置:

 double GetTopFrom(){//屏幕的高度-底部TaskBar的高度。double topFrom = System.Windows.SystemParameters.WorkArea.Bottom - 10;bool isContinueFind = _dialogs.Any(o => o.TopFrom == topFrom);while (isContinueFind){topFrom = topFrom - 100;//此处100是NotifyWindow的高isContinueFind = _dialogs.Any(o => o.TopFrom == topFrom);}if (topFrom <= 0)topFrom = System.Windows.SystemParameters.WorkArea.Bottom - 10;return topFrom;}

2.弹出的通知是一个NotificationWindow

这个Window就一个Image,一个Button,两个TextBlock。
就长这个样子:



  • Image用来显示通知的图标,Button用来关闭当前window,两个TextBlock的Text属性分别banding到NotifyData类的Title和Content属性上,用来显示消息的标题和正文。

  • 在NotificationWindow中添加如下代码:

public double TopFrom{get; set;}
private void NotificationWindow_Loaded(object sender, RoutedEventArgs e)
{NotificationWindow self = sender as NotificationWindow;if (self != null){self.UpdateLayout();SystemSounds.Asterisk.Play();//播放提示声double right = System.Windows.SystemParameters.WorkArea.Right;//工作区最右边的值self.Top = self.TopFrom - self.ActualHeight;DoubleAnimation animation = new DoubleAnimation();animation.Duration = new Duration(TimeSpan.FromMilliseconds(NotifyTimeSpan));//NotifyTimeSpan是自己定义的一个int型变量,用来设置动画的持续时间animation.From = right;animation.To = right - self.ActualWidth;//设定通知从右往左弹出self.BeginAnimation(Window.LeftProperty, animation);//设定动画应用于窗体的Left属性Task.Factory.StartNew(delegate{int seconds = 5;//通知持续5s后消失System.Threading.Thread.Sleep(TimeSpan.FromSeconds(seconds));//Invoke到主进程中去执行Invoke(self, delegate{animation = new DoubleAnimation();animation.Duration = new Duration(TimeSpan.FromMilliseconds(NotifyTimeSpan));animation.Completed += (s, a) => { self.Close(); };//动画执行完毕,关闭当前窗体animation.From = right - self.ActualWidth;animation.To = right;//通知从左往右收回self.BeginAnimation(Window.LeftProperty, animation);});});}
}
static void Invoke(Window win, Action a)
{win.Dispatcher.Invoke(a);
}

上面这段代码注释已经很明白了,没什么好讲的。

  • 当Button按钮点击后执行关闭窗体操作,这段代码其实跟上面的类似:
private void ButtonClose_Click(object sender, RoutedEventArgs e)
{double right = System.Windows.SystemParameters.WorkArea.Right;DoubleAnimation animation = new DoubleAnimation();animation.Duration = new Duration(TimeSpan.FromMilliseconds(NotifyTimeSpan));animation.Completed += (s, a) => { this.Close(); };animation.From = right - this.ActualWidth;animation.To = right;this.BeginAnimation(Window.LeftProperty, animation);
}

3.结束了,就这么简单

CSDN下载

百度免费下载:链接: https://pan.baidu.com/s/1eSq5f8Y 密码: 5sna

posted on 2018-05-26 09:40 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/9091881.html

【WPF】右下角弹出自定义通知样式(Notification)——简单教程相关推荐

  1. wpf 点击按钮弹出新对话框_WPF弹出自定义窗口的方法

    本文实例讲述了WPF弹出自定义窗口的方法.分享给大家供大家参考,具体如下: 测试环境: [1]VS2010SP1 [2]WPF(.NET Framework 4)项目 内容简介 WPF工程如何弹出自定 ...

  2. 对div实现右键弹出自定义菜单

    实现只对蓝色的Div弹出自定义菜单,其他位置弹出默认的浏览器菜单 js代码如下: <script type="text/javascript">$(function() ...

  3. wpf 点击按钮弹出选择框_WPF-PopupWindow wpf右下角弹出框,通过按钮调用,类似QQ CSharp C#编程 238万源代码下载- www.pudn.com...

    文件名称: WPF-PopupWindow下载 收藏√  [ 5  4  3  2  1 ] 开发工具: C# 文件大小: 90 KB 上传时间: 2013-07-24 下载次数: 19 详细说明:w ...

  4. QT TextEdit设置背景、明文加密、弹出网站、弹出自定义对话框、gif动态图片、程序启动动画、打包程序、关闭事件

    TextEdit设置背景 前提必须已添加了资源图片 铭文加密 ui->passLineEdit->setEchoMode(QLineEdit::Password); 弹出网站 #inclu ...

  5. Winform像菜单一样弹出自定义内容实现示例

    在实际工作中,如果能像菜单一样弹出自定义内容,会方便很多,比如查询时,比如下拉列表显示多列信息时,比如在填写某个信息需要查看一些信息树时.这个时候自定义弹出界面就显的非常重要了 我这里其实用到的是网上 ...

  6. 弹出html对话框样式,对话框或弹出自定义样式的3种方法

    1.使用Activity实现 在AndroidManifest.xml中修改Actity的主题android:theme="@style/MyDialogStyleBottom" ...

  7. php点击弹出文字代码,js实现鼠标点击页面弹出自定义文字效果

    本文实例为大家分享了js鼠标点击页面弹出文字的具体代码,供大家参考,具体内容如下 效果: 实现代码: (function(e){ // 点击事件触发生生元素等一系列动作的初始状态 var bombFl ...

  8. android弹出自定义layout菜单,Android:PopWindow — 对Android的底部弹窗、顶部弹窗菜单及自定义界面的使用封装...

    转载请注明出处:http://blog..net/hmyang314/article/details/70613478 PopWindow 对Android的底部弹窗,顶部弹窗菜单及自定义界面的使用封 ...

  9. 微信小程序-弹出自定义对话框

    最近,需要在小程序里做一个弹出对话框的操作,微信提供的 showmodal 也达不到我想要的效果,于是自己尝试... 如图: 大神看了莫喷,希望能帮助到刚入门的小伙伴... 代码 : wxml: &l ...

最新文章

  1. Web 开发最有用的 jQuery 插件集锦
  2. PTA-1011——World Cup Betting
  3. 斯坦福大学机器学习第一课“引言(Introduction)”
  4. docker 安装elasticsearch
  5. python双人格斗游戏代码_百行 HTML5 代码实现四种双人对弈游戏
  6. 没有基础怎么学习PLC编程?
  7. latex_列表和表格环境_给tabular加lable标签问题
  8. 怎样在计算机桌面上安装驱动器,怎么用韩博士驱动助理安装电脑驱动
  9. 用计算机用两个珠子能拨出那些数字,人教版一年级数学上册第三单元教案
  10. 【TVM帮助文档学习】Relay的模式匹配
  11. html 空格 正则表达式,正则表达式清除空格和html标签中的 空格
  12. GMTC2019会后:做一场冷门的技术专场是什么体验
  13. Jenkins 前端 自动化发版/CICD
  14. 世界黄金价格走势,十大香港国际黄金交易平台排行榜
  15. 卫星过顶计算matlab,基于SGP4模型的卫星轨道计算.docx
  16. 编辑/调试汇编语言所需要工具
  17. 北美电影票房Top10-2019年12月20日:《星战9》1.77亿不及预期
  18. 云游戏能成为5G第一个杀手级应用吗?
  19. 『谷粒儿』-有它,育儿就是这么简单
  20. EZ-USB CY7C68013A固件Slave FIFO初始化

热门文章

  1. 2018第九届山东省ACM省赛
  2. 二十二 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别...
  3. mysql 命令行参数
  4. mysql的介绍和安装
  5. UDP聊天工具的实现
  6. Oracle数据库的创建、数据导入导出
  7. sharepoint webpart
  8. Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的适用版本
  9. SQL Relay 0.49 发布,SQL 中间层
  10. ei拼音的四个声调对应的字_非常容易混淆的汉语拼音“er”,究竟特殊在哪里?孩子总是搞不懂...