UWP笔记-消息弹窗自动淡出
为了让用户有个更好的UI交互,可以增加自动淡出的消息弹窗,例如:网易云音乐UWP,切换播放模式时,出现的类似消息提示。
右键项目,添加用户控件
UserControlDemo.xaml:
<UserControl
<UserControl.Resources>
<Storyboard x:Name="story_Board" >
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="main_Grid"
Storyboard.TargetProperty="Opacity"
BeginTime="0:0:0">
<SplineDoubleKeyFrame KeyTime="00:00:00.00" Value="1"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.400" Value="0.0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>
<Grid x:Name="main_Grid">
<Border CornerRadius="10"
Background="Transparent"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Padding="15,5">
<TextBlock x:Name="showContent_textBlock" Margin="10,0,0,2" Foreground="WhiteSmoke" FontSize="30"/>
</Border>
</Grid>
</UserControl>
UserControlDemo.xaml.cs:
public sealed partial class UserControlDemo : UserControl
{
private Popup popup;
private string str;
private TimeSpan showTime_tmr;
public UserControlDemo()
{
this.InitializeComponent();
popup = new Popup();
popup.Child = this;
MeasurePopupSize();
this.Loaded += NotifyPopup_Loaded;
this.Unloaded += NotifyPopup_Unloaded;
}
public VolumeContentDialog(string content, TimeSpan showTime) : this()
{
this.str = content;
this.showTime_tmr = showTime;
}
public VolumeContentDialog(string content) : this(content, TimeSpan.FromSeconds(2))
{
}
public void Show()
{
this.popup.IsOpen = true;
}
public void Hide()
{
this.popup.IsOpen = false;
}
private void MeasurePopupSize()
{
this.Width = ApplicationView.GetForCurrentView().VisibleBounds.Width;
double marginTop = 0;
if (ApiInformation.IsTypePresent("Windows.UI.ViewManagement.StatusBar"))
marginTop = StatusBar.GetForCurrentView().OccludedRect.Height;
this.Height = ApplicationView.GetForCurrentView().VisibleBounds.Height;
this.Margin = new Thickness(0, marginTop, 0, 0);
}
private void NotifyPopup_Loaded(object sender, RoutedEventArgs e)
{
this.showContent_textBlock.Text = str;
this.story_Board.BeginTime = this.showTime_tmr;
this.story_Board.Begin();
this.story_Board.Completed += storyBoard_Completed;
ApplicationView.GetForCurrentView().VisibleBoundsChanged += NotifyPopup_VisibleBoundsChanged;
}
private void NotifyPopup_VisibleBoundsChanged(ApplicationView sender, object args)
{
MeasurePopupSize();
}
private void storyBoard_Completed(object sender, object e)
{
this.popup.IsOpen = false;
}
private void NotifyPopup_Unloaded(object sender, RoutedEventArgs e)
{
ApplicationView.GetForCurrentView().VisibleBoundsChanged -= NotifyPopup_VisibleBoundsChanged;
}
}
然后直接在MianPage.cs中实例化引用就可以了。
MainPage.xaml.cs:
UserControlDemo demo = new UserControlDemo("Demo");
demo.Show();
UWP笔记-消息弹窗自动淡出的更多相关文章
- Sagit.Framework For IOS 开发框架入门教程5:消息弹窗STMsgBox
前言: 昨天刚写了一篇IT连创业的文章:IT连创业系列:产品设计之答题模块,(欢迎大伙关注!) 感觉好久没写IOS的文章了,今天趁机,来补一篇,Sagit的教程. Sagit 开源地址:https:/ ...
- Storm学习笔记 - 消息容错机制
Storm学习笔记 - 消息容错机制 文章来自「随笔」 http://jsynk.cn/blog/articles/153.html 1. Storm消息容错机制概念 一个提供了可靠的处理机制的spo ...
- ArcGIS案例学习笔记-CAD数据自动拓扑检查
ArcGIS案例学习笔记-CAD数据自动拓扑检查 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 功能:针对CAD数据,自动进行拓扑检查 优点:类别:地理建模项目实例 ...
- 【WPF】对话框/消息弹窗
非模式对话框 需求:弹窗是非模式对话框,即可以多个弹窗弹出,且弹窗后面的窗体可以被操作,不会被锁定. 自定义的窗体Window实现以下步骤: 在C#代码中弹出窗体时,使用 window.Show() ...
- ASP.NET 多语言的实现(后台消息+前台消息+页面自动绑定)
一 前言 界面支持多种语言,在使用ASP.NET自带的多语言方案时遇到下列问题: 在做管理类的功能时,有添加.修改和查看页面,需要支持多语言的控件基本相同,但要维护多处,产生冗余(ASP.NET有共享 ...
- JDBC学习笔记(6)——获取自动生成的主键值&处理Blob&数据库事务处理
获取数据库自动生成的主键 [孤立的技术是没有价值的],我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. 具体的代码实现: /** * 获取数据 ...
- objc_msgSend消息传递学习笔记 – 消息转发
该文是 objc_msgSend消息传递学习笔记 – 对象方法消息传递流程 的基础上继续探究源码,请先阅读上文. 消息转发机制(message forwarding) Objective-C 在调用对 ...
- js封装好的模仿qq消息弹窗代码
在我们的日常开发中,或者生活中.常常须要用到弹出窗.这里我们就用js模拟一下qq消息一样的弹出窗. 直接贴代码: <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- ArcGIS API for JavaScript 4.2学习笔记[15] 弹窗内容的格式与自定义格式
先看结果截图吧(不看过程可以直接看总结,在文末): 随便点击了两个城市斑块,出现结果如图. 我来解读一下这结果和以前的有什么不同: 这个例子使用了PopupTemplate,数据是Layer(使用Po ...
随机推荐
- xShell终端中文乱码-解决方法
中文乱码的原因有三种:(1)Linux系统的编码问题(2)xShell终端的编码问题(3)两端的语言编码不一致 linux系统编码 (1) locale:查看系统语言 (2)echo $LANG:查看 ...
- Oracle 后台进程(四)CKPT进程
一.CKPT简介 检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件.检查点分为三类:1)局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓 ...
- MySQL B+树 的插入与删除
一.MySQL Index 的插入 有如下B+树,其高度为2,每页可存放4条记录,扇出为5.所有记录都在叶子节点上, 并且是顺序存放,如果用户从最左边的叶子节点开始顺序遍历,可以得到所有简直的顺序 排 ...
- http 内容协商返回最适合的内容
内容协商返回最命适的内容AcceptAccept-CharsetAccept-EncodingAccept-LanguageContent-Language内容协商技术有以下 3 种类型.服务器驱动协 ...
- 【概率论】3-6:条件分布(Conditional Distributions Part I)
title: [概率论]3-6:条件分布(Conditional Distributions Part I) categories: Mathematic Probability keywords: ...
- springboot 出现 org.hibernate.LazyInitializationException: could not initialize proxy
org.hibernate.LazyInitializationException: could not initialize proxy [com.example.shop.dataobject.U ...
- SpringMVC--DispatcherServlet
DispatcherServlet 是前端控制器设计模式的实现,提供 Spring Web MVC 的集中访问点,而且负责职责的分派,而且与 Spring IoC 容器无缝集成,从而可以获得 Spri ...
- 谈谈Java对象的强引用,软引用,弱引用,虚引用分别是什么
整体结构 java提供了4中引用类型,在垃圾回收的时候,都有自己的各自特点. 为什么要区分这么多引用呢,其实这和Java的GC有密切关系. 强引用(默认支持模式) 把一个对象赋给一个引用变量,这个引用 ...
- Leetcode题目543:二叉树的直径(简单)
题目描述: 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, ...
- go -- application/x-www-form-urlencoded发送post数据