博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
“父窗口拖动的时候Popup不随着父窗口移动”问题的解决方案
阅读量:5109 次
发布时间:2019-06-13

本文共 1926 字,大约阅读时间需要 6 分钟。

我们用WPF用的Popup时候会发现,当 StaysOpen=True 的时候,因为Popup不会消失,在父窗口移走的时候Popup仍旧在原地。。。作者在国外网站上无意间发现了这个解决方案,拿出来给大家分享:

方法是为Popup定义一个附加属性。代码如下。

1     public class PopopHelper 2     { 3         public static DependencyObject GetPopupPlacementTarget(DependencyObject obj) 4         { 5             return (DependencyObject)obj.GetValue(PopupPlacementTargetProperty); 6         } 7  8         public static void SetPopupPlacementTarget(DependencyObject obj, DependencyObject value) 9         {10             obj.SetValue(PopupPlacementTargetProperty, value);11         }12 13         // Using a DependencyProperty as the backing store for PopupPlacementTarget.  This enables animation, styling, binding, etc...14         public static readonly DependencyProperty PopupPlacementTargetProperty =15             DependencyProperty.RegisterAttached("PopupPlacementTarget", typeof(DependencyObject), typeof(PopopHelper), new PropertyMetadata(null,OnPopupPlacementTargetChanged));16 17         private static void OnPopupPlacementTargetChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)18         {19             if (e.NewValue != null)20             {21                 DependencyObject popupPopupPlacementTarget = e.NewValue as DependencyObject;22                 Popup pop = d as Popup;23 24                 Window w = Window.GetWindow(popupPopupPlacementTarget);25                 if (null != w)26                 {27                     w.LocationChanged += delegate28                     {29                         var offset = pop.HorizontalOffset;30                         pop.HorizontalOffset = offset + 1;31                         pop.HorizontalOffset = offset;32                     };33                 }34             }35         }36         37     }

之后只需要在Popup控件上这样写即可:

1     
2
3
4

本文的示例工程可以从下载。

欢迎各种转载,转载请注明来自 Leaco 的博客

转载于:https://www.cnblogs.com/Leaco/p/3168540.html

你可能感兴趣的文章
其他选择器
查看>>
《玩转Spring》第二章 BeanPostProcessor扩展
查看>>
Silverlight学习点滴之四——DataGrid如何绑定外键
查看>>
数据库答案
查看>>
white-space、word-break、word-wrap和text-overflow
查看>>
图论(网络流):SCOI 2007 修车
查看>>
python-装饰器&生成器&迭代器
查看>>
“因为数据库正在使用,所以无法获得对数据库的独占访问权。”处理
查看>>
控件缩放
查看>>
IOS问题汇总:2015-1-8 SBJson解析时报错—json文件字符非法
查看>>
c# int Int32 Int64 的区别
查看>>
[视频]K8飞刀 一键免杀 IE神洞网马教程
查看>>
正则表达式常用操作符
查看>>
Java环境变量的配置
查看>>
python基础 递归函数
查看>>
stm32 定时器与占空比
查看>>
C# CsvFile 类
查看>>
ECNU1328
查看>>
centos7 yum安装LAMP
查看>>
Logstash常用filter插件
查看>>