WPF popup自动关闭
- var tileMore = new Tile
- {
- Height = ,
- Width = ,
- Background = new SolidColorBrush(Color.FromRgb(, , )),
- Title = "更多...",
- };
- tileMore.SetResourceReference(FrameworkElement.StyleProperty, "KentTile");
- Popup popup = new Popup
- {
- //StaysOpen = false,
- PopupAnimation = PopupAnimation.Slide,
- PlacementTarget = tileMore,
- Placement = PlacementMode.Bottom,
- AllowsTransparency = true
- };
- //pop里面生成的内容,本例是StackPannel中包括一个textbox
- WrapPanel stackPanel = new WrapPanel
- {
- Width = tileMore.Width * ,
- Background = Brushes.Transparent
- };
- stackPanel.Children.Add(/*sth to show*/);
- popup.Child = stackPanel;
- tileMore.MouseEnter += (sender, e) =>
- {
- popup.IsOpen = true;
- };
- tileMore.MouseLeave += (s, e) =>
- {
- if (timerCloseRecentPopup == null)
- {
- timerCloseRecentPopup = new DispatcherTimer();
- timerCloseRecentPopup.Interval = new TimeSpan(, , );
- timerCloseRecentPopup.Tag = popup;
- timerCloseRecentPopup.Tick += closePopup;
- }
- timerCloseRecentPopup.Stop();
- timerCloseRecentPopup.Start();
- };
- popup.MouseLeave += (s, e) =>
- {
- if(timerCloseRecentPopup == null)
- {
- timerCloseRecentPopup = new DispatcherTimer();
- timerCloseRecentPopup.Interval = new TimeSpan(, , );
- timerCloseRecentPopup.Tag = popup;
- timerCloseRecentPopup.Tick += closePopup;
- }
- timerCloseRecentPopup.Stop();
- timerCloseRecentPopup.Start();
- };
- /// <summary>
- /// 定时关闭 更多 popup窗口
- /// </summary>
- private DispatcherTimer timerCloseRecentPopup;
- private void closePopup(object state,EventArgs e)
- {
- Popup pop = timerCloseRecentPopup.Tag as Popup;
- if(pop == null)
- {
- //todo timer里面的Assert没有对话框出来
- Debug.Assert(true,"pop==null");
- return;
- }
- Tile tileMore = pop.PlacementTarget as Tile;
- if (!pop.IsMouseOver )
- {
- if(tileMore != null)
- {
- if(!tileMore.IsMouseOver)
- {
- pop.IsOpen = false;
- timerCloseRecentPopup.Stop();
- }
- }
- else
- {
- pop.IsOpen = false;
- timerCloseRecentPopup.Stop();
- }
- }
- }
WPF popup自动关闭的更多相关文章
- WPF Popup 控件导致被遮挡内容不刷新的原因
WPF Popup 控件导致被遮挡内容不刷新的原因 周银辉 今天在写一个WPF控件时用到了Popup控件,很郁闷的情况是:当popup关闭时,原来被popup挡住的界面部分不刷新,非要手动刷新一下(比 ...
- WPF Popup 置顶问题
原文 WPF Popup 置顶问题 问题: 使用wpf的popup,当在popup中弹出MessageBox或者打开对话框的时候,popup总是置顶,并遮住MessageBox或对话框. 解决: 写如 ...
- WPF Popup全屏 弹出方法。解决只显示75%的问题。
WPF Popup全屏 弹出方法.解决只显示75%的问题. WPF 中 Popup 有一个特点.当Popup的高度超过屏幕的75%的时候,只显示75%的高度. 如下代码: <Window x ...
- 自定义WPF Popup控件
解决问题 1.WPF Popup 不随着 Window 一起移动的问题 2.WPF Popup 总是显示在最前面 引用命名空间 xmlns:ctrl="clr-namespace:Micro ...
- wpf Popup Win8.0 bug HorizontalOffset 弹出位置偏移
问题描述参考 wpf 客户端[JDAgent桌面助手]开发详解(四) popup控件的win8.0的bug 当开发完程序后,我们在多操作系统测试时候发现:win8.0 系统中 popup 弹出的位置 ...
- WPF popup被截断的原因和修改方法
原因:wpf里 popup不能超过屏幕75%的面积,不知道为什么要这么设置? 修改方法: private void SetPopupScreen() { Rect rtWnd = , , gridMa ...
- WPF Popup 右下角提示框 定时消失 ,以及任意位置定位
------------恢复内容开始------------ 好久没写WPF的博客了,其实有很多心得要总结下,但是懒..... 今天工作需要,需要实现一个 1 右下角的提示窗口,然后过三五秒自动消失这 ...
- WPF popup置顶
在程序写一个popup发现他会在置顶,在网上找了两大神代码http://www.cnblogs.com/Leaco/p/3164394.html http://blog.csdn.net/baijin ...
- WPF popup控件的使用
<Window x:Class="WPFPopup.RuntimePopup" xmlns="http://schemas.microsoft.com/wi ...
随机推荐
- javascript的几个知识点scoping, hoisting, IIFE
Scoping--作用域 ES6之前只有函数作用域.ES6加入块级作用域.用let声名的变量是块作用域内有效,用var声名的变量在函数作用域与块作用域里有效. Hoisting--提升 Hoistin ...
- c++ 查缺补漏
c++句柄 win句柄保存对象的实时地址(对象消失,句柄消失).指针保存固定地址(对象消失,内存泄漏) 超简单句柄类 指针型句柄 管理图书类句柄 c++ 枚举 enum Suit { Diamonds ...
- Kali 安装 VMwaretools 时 “没有足够可有空间提取xxxxxx”
方法:将VMwaretools 的压缩包复制到想要解压的地方,然后再进行提取
- MySQL 8 配置文件
包括功能: 端口,是否启用bin log , 指定目录, InnoDB是否启用压缩,MySQL使用旧的密码验证方式. 说明,建表的时候要添加必要的参数才会启用表数据压缩存储,以下为例: CREATE ...
- linux环境下安装使用selenium Chrome
安装驱动 http://chromedriver.storage.googleapis.com/index.html 下载对应chrome浏览器版本的驱动程序 chmod +x chromedrive ...
- GitHub 托管的10款免费开源 windows 工具
GitHub 是如今所有开源事物的中央仓库, 这个网站最近发布了一个叫做<2016 Octoverse 状态报告>,详细列出了从去年起其一系列亮点, 包括总的活跃用户数,最常见的 emo ...
- C++标准模板库(STL)之Set
1.Set的用法 Set:集合,一个内部自动有序而且不重复元素的容器.使用set,要加头文件#include<set>和using namespace std; 1.1.Set的定义 se ...
- IPFS扫盲
第二届深圳区块链技术与应用大会暨展览会,深圳区块链存储与IPFS技术应用大会暨展览会于2019年4月9日在深圳会展中心6号馆举行.那么这个IPFS是什么?和区块链有什么关系?有什么用?又怎么用呢?接下 ...
- "There is no tracking information for the current branch" 解决方法
因为新创建的分支push到远程仓库后没有与本地分支关联,下面语句可以令远程分支与本地分支关联起来 git branch --set-upstream-to=origin/release_3.1.3 r ...
- linux常用命令 运算命令
linux的运算命令 expr命令,对整数进行运算 > expr的运算必须用空格间隔开 > \* 表示转义字符 > 保持先乘除后加减,如果需要优先运算则需要加命令替换符 > 也 ...