首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OnInitialized与OnSourceInitialized在WPF中的差异

OnInitialized与OnSourceInitialized在WPF中的差异
EN

Stack Overflow用户
提问于 2019-02-12 08:51:28
回答 1查看 1.8K关注 0票数 3

我试图在WPF中添加全局热键。

代码语言:javascript
运行
复制
        var helper = new WindowInteropHelper(this);
        var handle = helper.Handle;
        var source = HwndSource.FromHwnd(handle);

当我将这段代码放入OnInitialized重写方法中时,它返回handle变量的值0,并在HwndSource.FromHwnd(handle)中失败。

但是,当我把它放在OnSourceInitialized重写方法中时,它会为handle变量返回一些随机值,并在HwndSource.FromHwnd(handle)中工作得很好。

我只是想弄明白为什么会这样。

OnInitialized和OnSourceInitialized在WPF中有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-12 09:13:04

初始化FrameworkElement.Initialized ( WPF元素)时会引发FrameworkElement事件。在这里的医生

每当调用EndInitOnVisualParentChanged方法时,都会引发此事件。对这两种方法的调用可能来自应用程序代码,或者在处理XAML页面时通过可扩展应用程序标记语言(XAML)处理器行为调用。

此事件是在处理XAML树时引发的。它可以为任何FrameworkElement (包括Window )引发。

当基础Window.SourceInitialized窗口句柄可用时,将引发Win32事件。它只在Window上提出。您可以在文档中阅读更多内容。

这就是为什么在Window.SourceInitialized事件处理程序中获得有效句柄而在FrameworkElement.Initialized事件处理程序中获得无效句柄(0)的原因。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54646062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档