“父窗口拖动的时候Popup不随着父窗口移动”问题的解决方案
2013-07-02 22:15
344 查看
我们用WPF用的Popup时候会发现,当 StaysOpen=True 的时候,因为Popup不会消失,在父窗口移走的时候Popup仍旧在原地。。。作者在国外网站上无意间发现了这个解决方案,拿出来给大家分享:
方法是为Popup定义一个附加属性。代码如下。
之后只需要在Popup控件上这样写即可:
本文的示例工程可以从附件下载。
欢迎各种转载,转载请注明来自 Leaco 的博客:/article/5301301.html
方法是为Popup定义一个附加属性。代码如下。
public class PopopHelper { public static DependencyObject GetPopupPlacementTarget(DependencyObject obj) { return (DependencyObject)obj.GetValue(PopupPlacementTargetProperty); } public static void SetPopupPlacementTarget(DependencyObject obj, DependencyObject value) { obj.SetValue(PopupPlacementTargetProperty, value); } // Using a DependencyProperty as the backing store for PopupPlacementTarget. This enables animation, styling, binding, etc... public static readonly DependencyProperty PopupPlacementTargetProperty = DependencyProperty.RegisterAttached("PopupPlacementTarget", typeof(DependencyObject), typeof(PopopHelper), new PropertyMetadata(null,OnPopupPlacementTargetChanged)); private static void OnPopupPlacementTargetChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (e.NewValue != null) { DependencyObject popupPopupPlacementTarget = e.NewValue as DependencyObject; Popup pop = d as Popup; Window w = Window.GetWindow(popupPopupPlacementTarget); if (null != w) { w.LocationChanged += delegate { var offset = pop.HorizontalOffset; pop.HorizontalOffset = offset + 1; pop.HorizontalOffset = offset; }; } } } }
之后只需要在Popup控件上这样写即可:
<Grid> <TextBox x:Name="placementTextBox"/> <Popup PopopHelper.PopupPlacementTarget="{Binding ElementName=placementTextBox}" /> </Grid>
本文的示例工程可以从附件下载。
欢迎各种转载,转载请注明来自 Leaco 的博客:/article/5301301.html
相关文章推荐
- 解决popup不随着window一起移动的问题
- 如何禁止双击标题栏不改变窗口的大小和拖动标题栏窗口不移动的问题
- 银行就好系统,该程序存在问题,在顾客进入窗口开始服务的时候,一号窗口会出现在后面开始服务,如果有解决方案,请告诉我谢谢!
- 【解决方案】VMWare拖动窗口后有黑色边框(分辨率自适应问题)
- 通过在客户区拖动鼠标来移动窗口引发的一些问题
- pb数据窗口saveas成xml的时候返回-1的问题处理
- Eclipse调试模式代码窗口不同步移动问题
- Winform部署mshtml 程序集出错的一个解决方案 开发的时候没有问题 在客户部署的时候出的问题
- 最新版的struts-2.5.13 配置的时候出现问题和解决方案
- Flex AIR)嵌入HTML,点击其中的链接打开新窗口问题 解决方案
- js 解决movebox移动问题 取消图片默认拖动事件
- PopupWindow setOutsideTouchable(false)无效问题完美解决方案
- 微信小程序textarea的内容随着屏幕上下移动的问题
- 无窗口拖动问题
- View移动问题之别样解决方案
- U盘和移动硬盘不能安全删除问题及解决方案
- 请问java的大牛,java中是否有鼠标拖动控件,控件随着鼠标移动,一直到放下的api?
- 关于vs运行后窗口闪退问题部分解决方案
- ios 写项目的时候遇到的问题及解决方案(2)
- C#通过拖动窗体移动窗口