问题:

    近段时间,由于项目上的一些原因,设计到在WPF项目使用引用COM组件的问题,部分WPF元素浮动在COM组件之上,并且实现拖、停靠、放大等功能(子窗体不要求等比缩放,只要位置跟随主窗体即可),如图:

    

如何实现:

   方式1:

1、子窗体相对父窗体定位,通过父窗体LocationChanged事件,保持子父窗体相对位置

      2、 并且使用Topmost="True",使子窗体置于父窗体之上

        3、 Application.Current.Deactivated 与 Application.Current.Activated 处理应用获取失去焦点问题,控制子窗体的显示与隐藏

                     示例代码:  WPFChildParrentDemo.7z

          存在问题:

      2. 尚未解决父窗体放大缩小等问题

    2.  父窗体拖动时,子窗体位置正常显示;父窗体停靠最大化、普通、最小化时,子窗体位置不能正确显示,如图:

      

        

     3.  应用激活、后台时,子父窗体能正常显示,但是遇到百度云等浮动小窗体时,子父窗体不能正确显示,如图:

      

    方式2:   

      1、子窗体相对父窗体定位,通过父窗体LocationChanged事件,保持子父窗体相对位置

      2、 并且设置子窗体Owner属性为对应父窗体的引用

         实例代码:WPFChildParrentDemo2.7z

      优点:

       无需手动编码控制子窗体的显示隐藏即借助于( Application.Current.Deactivated 与 Application.Current.Activated 事件或其他事件),即能很好的解决方式1的第2个问题

PS:

  1. 可以通过SizeChanged事件来处理父窗体大小改变之后子窗体等位置更新问题。

  2. 通过设置Owner和ShowInTaskbar="False" 可以隐藏子窗体在任务栏中的缩略窗口效果。

WPF 父子窗体联动的更多相关文章

  1. WPF自适应窗体实现小结

    WPF自适应窗体实现小结 这几天,因工作需要,要对一个小软件进行UI调整.主要内容就是让其能够实现自适应窗体(包括文字和图标),做成像WIN7下的Media Center一样的UI.自适应窗体,顾名思 ...

  2. [小结][N种方法]实现WPF不规则窗体

    原文:[小结][N种方法]实现WPF不规则窗体 WPF实现不规则窗体,方法很多很多多.... 本文总结DebugLZQ认为简洁高效的几种方法 实现WPF不规则窗体的几种常用的方法如下: 1.使用Ble ...

  3. WPF实现窗体中的悬浮按钮

    WPF实现窗体中的悬浮按钮,按钮可拖动,吸附停靠在窗体边缘. 控件XAML代码: <Button x:Class="SunCreate.Common.Controls.FloatBut ...

  4. Flex父子窗体相互调用

    Flex父子窗体相互调用 1.设计思路 (1)子窗体调用父窗体的方法 (2)子窗体做了改动后,返回父窗体,父窗体调用子窗体函数 2.设计源代码 (1)父窗体 ParentWindow.mxml: &l ...

  5. [html][javascript]父子窗体传值

    父窗体 <script type="text/javascript"> newwindow = window.open("b1.html",&quo ...

  6. WPF透明窗体制作

    原文:WPF透明窗体制作 窗体的样式: <Grid Width="{Binding Width, ElementName=w}" Height="{Binding ...

  7. .NET CORE(C#) WPF亚克力窗体

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF亚克力窗体 阅读导航 本文背景 代码实现 本文参考 源码 1 ...

  8. WPF子窗体

    效果: 1. 点击WPF主窗体上的一个按钮,弹出子窗体, 2. 窗体最小化后,在菜单栏中点击子窗体,会连带显示它所从属的主窗体. 1. 在WPF项目中,已有主窗体MainWindow,再新建子窗体Ch ...

  9. WPF 子窗体关闭时显示父窗体

    这个问题纠结了两天,今天在一个朋友的帮助下,解决了,其实很简单,但是可能作为新手,接触WPF时间还是短,因此作为一个问题困扰了我. 父窗体部分代码 private void EditInformati ...

随机推荐

  1. MSSQL中数据库对象类型解释

    public string GetObjectTypeName(object oType) { switch (oType+"") { case "U": re ...

  2. 以太坊系列之十一: 零起步使用remix开发智能合约

    一步一步使用remix开发智能合约 最新版的remix(2017-8-3)只能使用在线开发了,已经没有离线版本了,并且好像在线版本要FQ才能访问(自行解决). 1.打开remix 注意地址如果是htt ...

  3. spring @Async 线程池使用

    最近公司项目正逐渐从dubbo向springCloud转型,在本次新开发的需求中,全部使用springcloud进行,在使用时线程池,考虑使用spring封装的线程池,现将本次使用心得及内容记录下来 ...

  4. 《Thinking in Java》 10~

    chapter 10 内部类(P191) 创建内部类 链接到外部类 内部类能访问器外围对象的所有成员,而不需要任何特殊条件. 使用.this与.new package cn.test; public ...

  5. 《javascript 高级程序设计》 笔记2 8~章

    chapter 8 BOM(浏览器对象模型) window对象 表示浏览器的一个实例. 直接在window对象上定义的属性可以通过delete操作符删除,而全局变量不可以. 窗口关系及框架 位置操作 ...

  6. char *p="abc" 与 char p[]="abc" 的区别

    本文来源于网络 出处:点我 有这样一段代码: #include "stdio.h" char *get_string_1() { char p[] = "hello wo ...

  7. 【spring】bean加载顺序

    问题来源 有一个bean为A,一个bean为B.想要A在容器实例化的时候的一个属性name赋值为B的一个方法funB的返回值. 如果只是在A里单纯的写着: private B b; private S ...

  8. 我的csdn博客地址

    呆雁 持续的谦虚与努力 http://blog.csdn.net/u013539183

  9. 在Pd中取消Code Name 同步

    以前记得现在忘记了,好不容易找回来,记住备忘吧.  

  10. IntelliJ IDEA 把Maven项目导出可执行jar包

    2017年04月05日 14:05:08 waterimelon 阅读数:1574 标签: intellij ideamaven 更多 个人分类: idea   第一步  第二步  第三步