【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
转载于:https://www.cnblogs.com/lonelyxmas/p/9091881.html
【WPF】右下角弹出自定义通知样式(Notification)——简单教程相关推荐
- wpf 点击按钮弹出新对话框_WPF弹出自定义窗口的方法
本文实例讲述了WPF弹出自定义窗口的方法.分享给大家供大家参考,具体如下: 测试环境: [1]VS2010SP1 [2]WPF(.NET Framework 4)项目 内容简介 WPF工程如何弹出自定 ...
- 对div实现右键弹出自定义菜单
实现只对蓝色的Div弹出自定义菜单,其他位置弹出默认的浏览器菜单 js代码如下: <script type="text/javascript">$(function() ...
- 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 ...
- QT TextEdit设置背景、明文加密、弹出网站、弹出自定义对话框、gif动态图片、程序启动动画、打包程序、关闭事件
TextEdit设置背景 前提必须已添加了资源图片 铭文加密 ui->passLineEdit->setEchoMode(QLineEdit::Password); 弹出网站 #inclu ...
- Winform像菜单一样弹出自定义内容实现示例
在实际工作中,如果能像菜单一样弹出自定义内容,会方便很多,比如查询时,比如下拉列表显示多列信息时,比如在填写某个信息需要查看一些信息树时.这个时候自定义弹出界面就显的非常重要了 我这里其实用到的是网上 ...
- 弹出html对话框样式,对话框或弹出自定义样式的3种方法
1.使用Activity实现 在AndroidManifest.xml中修改Actity的主题android:theme="@style/MyDialogStyleBottom" ...
- php点击弹出文字代码,js实现鼠标点击页面弹出自定义文字效果
本文实例为大家分享了js鼠标点击页面弹出文字的具体代码,供大家参考,具体内容如下 效果: 实现代码: (function(e){ // 点击事件触发生生元素等一系列动作的初始状态 var bombFl ...
- android弹出自定义layout菜单,Android:PopWindow — 对Android的底部弹窗、顶部弹窗菜单及自定义界面的使用封装...
转载请注明出处:http://blog..net/hmyang314/article/details/70613478 PopWindow 对Android的底部弹窗,顶部弹窗菜单及自定义界面的使用封 ...
- 微信小程序-弹出自定义对话框
最近,需要在小程序里做一个弹出对话框的操作,微信提供的 showmodal 也达不到我想要的效果,于是自己尝试... 如图: 大神看了莫喷,希望能帮助到刚入门的小伙伴... 代码 : wxml: &l ...
最新文章
- Web 开发最有用的 jQuery 插件集锦
- PTA-1011——World Cup Betting
- 斯坦福大学机器学习第一课“引言(Introduction)”
- docker 安装elasticsearch
- python双人格斗游戏代码_百行 HTML5 代码实现四种双人对弈游戏
- 没有基础怎么学习PLC编程?
- latex_列表和表格环境_给tabular加lable标签问题
- 怎样在计算机桌面上安装驱动器,怎么用韩博士驱动助理安装电脑驱动
- 用计算机用两个珠子能拨出那些数字,人教版一年级数学上册第三单元教案
- 【TVM帮助文档学习】Relay的模式匹配
- html 空格 正则表达式,正则表达式清除空格和html标签中的 空格
- GMTC2019会后:做一场冷门的技术专场是什么体验
- Jenkins 前端 自动化发版/CICD
- 世界黄金价格走势,十大香港国际黄金交易平台排行榜
- 卫星过顶计算matlab,基于SGP4模型的卫星轨道计算.docx
- 编辑/调试汇编语言所需要工具
- 北美电影票房Top10-2019年12月20日:《星战9》1.77亿不及预期
- 云游戏能成为5G第一个杀手级应用吗?
- 『谷粒儿』-有它,育儿就是这么简单
- EZ-USB CY7C68013A固件Slave FIFO初始化
热门文章
- 2018第九届山东省ACM省赛
- 二十二 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别...
- mysql 命令行参数
- mysql的介绍和安装
- UDP聊天工具的实现
- Oracle数据库的创建、数据导入导出
- sharepoint webpart
- Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的适用版本
- SQL Relay 0.49 发布,SQL 中间层
- ei拼音的四个声调对应的字_非常容易混淆的汉语拼音“er”,究竟特殊在哪里?孩子总是搞不懂...