• WPF 父子窗体联动


       问题:

         近段时间,由于项目上的一些原因,设计到在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. 通过设置OwnerShowInTaskbar="False" 可以隐藏子窗体在任务栏中的缩略窗口效果。

  • 相关阅读:
    用html5标记一段文章模块
    自定义事件
    html5表单
    对canvas封装的js库
    canvas
    第五周进度总结
    第七周进度总结
    大道至简阅读笔记
    第六周进度总结
    第三周进度总结
  • 原文地址:https://www.cnblogs.com/u-drive/p/8261108.html
Copyright © 2020-2023  润新知