码迷,mamicode.com
首页 > Windows程序 > 详细

将非WPF window设为 WPF Window的Owner

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

标签:bsp   静态方法   htm   rop   win   log   source   因此   net   

原文:将非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

标签:bsp   静态方法   htm   rop   win   log   source   因此   net   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!