首页 > Windows开发 > 详细

将非WPF window设为 WPF Window的Owner

时间:2019-01-13 01:19:15      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:visual   helper   普通   win   模块   from   静态方法   log   int   

原文:将非WPF window设为 WPF Window的Owner

如果WPF Content是寄宿在Win32 窗体或Windows Form中,则在WPF模块中可能不会存在WPF Window(WPF模块的根可能是个UserControl).如果在WPF模块中弹出对话框,则设定其Owner不是那么方便。

WPF Window class只提供了Window类型的Owner属性.

但是.net framework提供了WindowInteropHelper.Owner 属性可以将Window的Owner设为一个handle.因此我们只要能获取到任何UI元素的Handle,我们便可以将其设为Window的Owner,不管其是不是一个WPF Window. 而.net framework又提供了HwndSource类型,利用该类型通过如下三步我们能设定WPF Window的Owner为一个普通的Visual:

1. 通过该类型的静态方法FromVisual(Visual visual)我们可以得到任何WPF Visual元素的HwndSource,

2. 通过HwndSource的Handle属性我们可以得到该Visual元素的Win32 Handle

3. 最后我们将得到的Win32 Handle赋给WindowInteropHelper.Owner,这样便将该Handle所代表的Visual设定为WindowInteropHelper所代表的Window的Owner了。

 

将非WPF window设为 WPF Window的Owner

标签:visual   helper   普通   win   模块   from   静态方法   log   int   

原文:https://www.cnblogs.com/lonelyxmas/p/10261648.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号