wpf 右下角弹出窗
自己写的wpf 弹出框,欢迎拍砖,动画都写在了后台代码,前台代码不太重要,用了一下iconfont,具体样式我就不贴出来了,本次主要是后台代码的动画
需要有父级窗口才可以使用。
前台代码:
- <Window x:Class="V2VReporter.Views.SystemViews.MsgPopup"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:local="clr-namespace:V2VReporter.Views.SystemViews"
- xmlns:controls="clr-namespace:V2VReporter.Controls"
- mc:Ignorable="d"
- Title="系统消息" Height="230" Width="300" AllowsTransparency="True" WindowStyle="None" ShowInTaskbar="False">
- <Border BorderBrush="{StaticResource SideLevel1}" BorderThickness="1">
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="30"></RowDefinition>
- <RowDefinition Height="*"></RowDefinition>
- <RowDefinition Height="Auto"></RowDefinition>
- </Grid.RowDefinitions>
- <Grid Grid.Row="0" Background="{StaticResource MainGreen}">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="*"></ColumnDefinition>
- <ColumnDefinition Width="*"></ColumnDefinition>
- </Grid.ColumnDefinitions>
- <StackPanel Grid.Column="0" Orientation="Horizontal">
- <TextBlock Text="" Style="{StaticResource IconFont}" VerticalAlignment="Center" FontSize="18" Foreground="AliceBlue" Margin="5,0,0,0"></TextBlock>
- <TextBlock Text="系统消息" Foreground="AliceBlue" FontSize="15" VerticalAlignment="Center" Margin="2,0,0,0" ></TextBlock>
- </StackPanel>
- <StackPanel Grid.Column="1" HorizontalAlignment="Right">
- <controls:IconButton Style="{StaticResource TitleCloseBtn}" Margin="0,5,2,0" Click="ButtonBase_OnClick"></controls:IconButton>
- </StackPanel>
- </Grid>
- </Grid>
- </Border>
- </Window>
后台代码:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Animation;
- using System.Windows.Media.Imaging;
- using System.Windows.Shapes;
- using V2VReporter.Resource;
- namespace V2VReporter.Views.SystemViews
- {
- /// <summary>
- /// MsgPopup.xaml 的交互逻辑
- /// </summary>
- public partial class MsgPopup:Window
- {
- /// <summary>
- /// 关闭动画
- /// </summary>
- private Storyboard sb_close=new Storyboard();
- /// <summary>
- /// 关闭标识
- /// </summary>
- private bool close_flg = false;
- /// <summary>
- /// 关闭动画
- /// </summary>
- private DoubleAnimation close=new DoubleAnimation();
- /// <summary>
- /// 窗口弹出
- /// </summary>
- private Storyboard sb_loaded=new Storyboard();
- /// <summary>
- /// 窗口弹出动画
- /// </summary>
- private DoubleAnimation load=new DoubleAnimation();
- /// <summary>
- /// 窗口加载动画
- /// </summary>
- private DoubleAnimation loadOp=new DoubleAnimation();
- public MsgPopup(Window win)
- {
- InitializeComponent();
- initedCloseStory();
- initedLoadStory(win);
- sb_loaded.Begin();
- }
- private void initedLoadStory(Window win)
- {
- this.Owner = win;
- this.Left = win.Width - this.Width;
- load.From = win.Height;
- load.To = win.Height - this.Height;
- load.Duration = new Duration(TimeSpan.FromSeconds(1.5));
- load.FillBehavior = FillBehavior.HoldEnd;
- load.AutoReverse = false;
- sb_loaded.Children.Add(load);
- Storyboard.SetTarget(load, this);
- Storyboard.SetTargetProperty(load, new PropertyPath("Top"));
- loadOp.From = ;
- loadOp.To = ;
- loadOp.Duration=new Duration(TimeSpan.FromSeconds(1.5));
- loadOp.FillBehavior = FillBehavior.HoldEnd;
- loadOp.AutoReverse = false;
- sb_loaded.Children.Add(loadOp);
- Storyboard.SetTarget(loadOp, this);
- Storyboard.SetTargetProperty(loadOp, new PropertyPath("Opacity"));
- }
- private void initedCloseStory()
- {
- close.From = ;
- close.To = ;
- close.Duration = new Duration(TimeSpan.FromSeconds());
- close.FillBehavior = FillBehavior.HoldEnd;
- close.AutoReverse = false;
- sb_close.Children.Add(close);
- Storyboard.SetTarget(close, this);
- Storyboard.SetTargetProperty(close, new PropertyPath("Opacity"));
- }
- protected override void OnClosing(CancelEventArgs e)
- {
- base.OnClosing(e);
- if (!close_flg)
- {
- sb_close.Completed += delegate
- {
- close_flg = true;
- this.Close();
- };
- sb_close.Begin();
- e.Cancel = true;
- }
- else
- {
- e.Cancel = false;
- }
- }
- private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
- {
- this.Close();
- }
- }
- }
直接用的话会运行不起来,主要看后台动画代码和逻辑
本文属原创 转载请写明出处
wpf 右下角弹出窗的更多相关文章
- DuiVision开发教程(18)-弹出窗
DuiVision的弹出窗体类CDlgPopup,是菜单.下拉列表等控件的父类,也能够单独使用,用于创建弹出窗体.弹出窗体默认是非激活状态下自己主动关闭,比如鼠标点击到弹出窗体外面的区域,弹出窗体就会 ...
- Jquery和Javascript 实际项目中写法基础-弹出窗和弹出层 (4)
一.实际项目中有很多如下界面效果. 二.该效果可以归结为弹出窗或者弹出层来实现的,为什么这么说?看如下代码: <!DOCTYPE html> <html> & ...
- Bootstrap模态弹出窗
Bootstrap模态弹出窗有三种方式: 1.href触发模态弹出窗元素: <a class="btn btn-primary" data-toggle="moda ...
- jquery Mobile弹出窗
先创建一个窗体 <div data-role="popup" id="popupView" class="ui-content" da ...
- 右下角弹出"Windows-延缓写入失败"或者"xxx-损坏文件 请运行Chkdsk工具"
知识点分析: 任务栏右下角弹出“Windows-延缓写入失败”或者“xxx-损坏文件 请运行Chkdsk工具”. 操作步骤: 方法一:Chkdsk工具 在开始---运行中输入cmd,然后输入chkds ...
- iOS:模态弹出窗控制器UIPopoverPresentationController
模态弹出窗控制器:UIPopoverPresentationController 实质:就是将内容控制器包装成PopoverPresentationController的形式,然后再模态出来,必须指定 ...
- iOS:弹出窗控制器:UIPopoverController
弹出窗控制器:UIPopoverController 截图: 实质:就是将内容控制器包装成popoverController的形式,然后在模态出来,必须给定指向目标(target.frame). ...
- C#利用API制作类似QQ一样的右下角弹出窗体
C#利用API制作类似QQ一样的右下角弹出窗体 (2009-03-21 15:02:49) 转载▼ 标签: 杂谈 分类: .NET using System;using System.Collecti ...
- winform C#屏幕右下角弹出消息框并自动消失
①弹出信息框后慢慢下降消失 在主窗体中新增按钮重命名为btnShowAndDisappearMessages,在click事件中写如下代码: private void btnShowAndDisapp ...
随机推荐
- 数据流中位数 · data stream median
[抄题]: 数字是不断进入数组的,在每次添加一个新的数进入数组的同时返回当前新数组的中位数. [思维问题]: [一句话思路]: 左边x个元素,右边要有x+1个元素,因此利用maxheap把左边的最大值 ...
- oralce 存储过程、函数和触发器
一.存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 创建存储过程 用CREATE PROCEDURE命令建立存储过程. 语法: create [or repl ...
- discuz的css处理机制
common/common.css 是一个通用的css文件. common/module.css 是某个功能模块使用的css文件. module.css中,利用特殊语法: /** 标识 **/ c ...
- SqlServer和MySql允许脏读的实现方式,提高查询效率
--Sql Server 允许脏读查询sqlselect * from category with(nolock) --MySql 允许脏读查询sql Mysql没有语法糖,需要原生的sqlSET S ...
- C语言点滴
static修饰的变量和函数不可以在其他文件extern引用该变量或者函数. static变量放在静态内存区. static变量赋值只生效一次,再无法调用赋值语句.但是可以运算,例如++等. exte ...
- win7 一切软件都安装不上 解决 把他卸掉
KB2962872 控制面板,添加删除程序,查看已更新
- 2018.08.27 [Usaco2017 Jan]Promotion Counting(线段树合并)
描述 The cows have once again tried to form a startup company, failing to remember from past experienc ...
- 2018.08.16 洛谷P1437 [HNOI2004]敲砖块(二维dp)
传送门 看起来普通dp" role="presentation" style="position: relative;">dpdp像是有后效性的 ...
- GitHub 安装配置
1:到 Github 注册 页面中注册,填写用户名.邮箱和密码 选择免费服务 步骤三可以根据自身喜好勾选或者直接跳过 2.1.2 创建远程仓库 创建完账号后,可以开始创建仓库 但是这里我们还没有验证邮 ...
- IDEA如何初始化Git本地仓库,并提交到远程仓库
本文转载自:http://blog.csdn.net/two_people/article/details/77008593 1. 首先在远程仓库上新建一个项目,码云和github都可以,我这里使用的 ...