1.           var tileMore = new Tile
  2. {
  3. Height = ,
  4. Width = ,
  5. Background = new SolidColorBrush(Color.FromRgb(, , )),
  6. Title = "更多...",
  7. };
  8. tileMore.SetResourceReference(FrameworkElement.StyleProperty, "KentTile");
  9.  
  10. Popup popup = new Popup
  11. {
  12. //StaysOpen = false,
  13. PopupAnimation = PopupAnimation.Slide,
  14. PlacementTarget = tileMore,
  15. Placement = PlacementMode.Bottom,
  16. AllowsTransparency = true
  17. };
  18. //pop里面生成的内容,本例是StackPannel中包括一个textbox
  19. WrapPanel stackPanel = new WrapPanel
  20. {
  21. Width = tileMore.Width * ,
  22. Background = Brushes.Transparent
  23. };
  24. stackPanel.Children.Add(/*sth to show*/);
  25. popup.Child = stackPanel;
  26.  
  27. tileMore.MouseEnter += (sender, e) =>
  28. {
  29. popup.IsOpen = true;
  30. };
  31.  
  32. tileMore.MouseLeave += (s, e) =>
  33. {
  34. if (timerCloseRecentPopup == null)
  35. {
  36. timerCloseRecentPopup = new DispatcherTimer();
  37. timerCloseRecentPopup.Interval = new TimeSpan(, , );
  38. timerCloseRecentPopup.Tag = popup;
  39. timerCloseRecentPopup.Tick += closePopup;
  40. }
  41. timerCloseRecentPopup.Stop();
  42. timerCloseRecentPopup.Start();
  43. };
  44.  
  45. popup.MouseLeave += (s, e) =>
  46. {
  47. if(timerCloseRecentPopup == null)
  48. {
  49. timerCloseRecentPopup = new DispatcherTimer();
  50. timerCloseRecentPopup.Interval = new TimeSpan(, , );
  51. timerCloseRecentPopup.Tag = popup;
  52. timerCloseRecentPopup.Tick += closePopup;
  53. }
  54. timerCloseRecentPopup.Stop();
  55. timerCloseRecentPopup.Start();
  56. };
  1.      /// <summary>
  2. /// 定时关闭 更多 popup窗口
  3. /// </summary>
  4. private DispatcherTimer timerCloseRecentPopup;
  5. private void closePopup(object state,EventArgs e)
  6. {
  7. Popup pop = timerCloseRecentPopup.Tag as Popup;
  8. if(pop == null)
  9. {
  10. //todo timer里面的Assert没有对话框出来
  11. Debug.Assert(true,"pop==null");
  12. return;
  13. }
  14.  
  15. Tile tileMore = pop.PlacementTarget as Tile;
  16.  
  17. if (!pop.IsMouseOver )
  18. {
  19. if(tileMore != null)
  20. {
  21. if(!tileMore.IsMouseOver)
  22. {
  23. pop.IsOpen = false;
  24. timerCloseRecentPopup.Stop();
  25. }
  26.  
  27. }
  28. else
  29. {
  30. pop.IsOpen = false;
  31. timerCloseRecentPopup.Stop();
  32. }
  33. }
  34.  
  35. }

WPF popup自动关闭的更多相关文章

  1. WPF Popup 控件导致被遮挡内容不刷新的原因

    WPF Popup 控件导致被遮挡内容不刷新的原因 周银辉 今天在写一个WPF控件时用到了Popup控件,很郁闷的情况是:当popup关闭时,原来被popup挡住的界面部分不刷新,非要手动刷新一下(比 ...

  2. WPF Popup 置顶问题

    原文 WPF Popup 置顶问题 问题: 使用wpf的popup,当在popup中弹出MessageBox或者打开对话框的时候,popup总是置顶,并遮住MessageBox或对话框. 解决: 写如 ...

  3. WPF Popup全屏 弹出方法。解决只显示75%的问题。

    WPF Popup全屏 弹出方法.解决只显示75%的问题.   WPF 中 Popup 有一个特点.当Popup的高度超过屏幕的75%的时候,只显示75%的高度. 如下代码: <Window x ...

  4. 自定义WPF Popup控件

    解决问题 1.WPF Popup 不随着 Window 一起移动的问题 2.WPF Popup 总是显示在最前面 引用命名空间 xmlns:ctrl="clr-namespace:Micro ...

  5. wpf Popup Win8.0 bug HorizontalOffset 弹出位置偏移

    问题描述参考 wpf 客户端[JDAgent桌面助手]开发详解(四) popup控件的win8.0的bug 当开发完程序后,我们在多操作系统测试时候发现:win8.0  系统中 popup 弹出的位置 ...

  6. WPF popup被截断的原因和修改方法

    原因:wpf里 popup不能超过屏幕75%的面积,不知道为什么要这么设置? 修改方法: private void SetPopupScreen() { Rect rtWnd = , , gridMa ...

  7. WPF Popup 右下角提示框 定时消失 ,以及任意位置定位

    ------------恢复内容开始------------ 好久没写WPF的博客了,其实有很多心得要总结下,但是懒..... 今天工作需要,需要实现一个 1 右下角的提示窗口,然后过三五秒自动消失这 ...

  8. WPF popup置顶

    在程序写一个popup发现他会在置顶,在网上找了两大神代码http://www.cnblogs.com/Leaco/p/3164394.html http://blog.csdn.net/baijin ...

  9. WPF popup控件的使用

    <Window x:Class="WPFPopup.RuntimePopup"     xmlns="http://schemas.microsoft.com/wi ...

随机推荐

  1. LINUX内核PCI扫描过程

    LINUX内核PCI扫描过程 内核版本 3.10.103 1. ACPI热插拔扫描subsys_initcall(acpi_init)@drivers/acpi/bus.c |-acpi_scan_i ...

  2. 【二分查找】 跳石头NOIP2015提高组 D2T1

    [二分查找]跳石头NOIP2015提高组 D2T1 >>>>题目 [题目描述] 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石 ...

  3. 【网址】ILSpy,C# .net/dot net的反编译工具

    ILSpy官网:http://ilspy.net/ ILSpy中文版:http://www.fishlee.net/soft/ilspy_chs/

  4. Win10 禁止自动更新以及禁止Windows 10升级助手(Windows 10 易升)

    微软目前已经重新启用非常烦人的Windows 10升级助手,现在该助手主要帮助用户自动下载以及安装更新. 彻底禁用: 1.在开始菜单右侧的搜索框中输入关键词控制面板,然后打开控制面板后转到程序与功能里 ...

  5. struts标签怎么判断request里的属性是否为空 <s:if test="${list==null}"> </s:if>

    <s:if test="${weigou}==999"> //错误的 ${list==null} ,$实在strtus的配置文件中取值用的,不是在jsp页面里取值的的吧 ...

  6. PDF 补丁丁 0.6.0.3340 版发布(修复提取图片的问题)

    新的版本修复了两个导致提取图片颜色异常的问题.

  7. PL/SQL Developer如何导出数据成sql的insert语句

    1.选择菜单 , [工具]-[导出表] 2.选择tab标签页的,[SQL插入] 注意where条件语句,注意要选择相应的表 3.选择输出

  8. JS-圣杯模式

    var inherit = (function(){ var F = function(){}; return function(Target,Origin){ F.prototype = Origi ...

  9. saltstack高效运维

    saltstack高效运维   salt介绍 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. salt强大吗 系统管理员日常会 ...

  10. C++11 相关教程

    C++11 中文wiki: https://zh.wikipedia.org/zh-cn/C%2B%2B11 C++11 新特性介绍: https://www.kancloud.cn/wangshub ...