等价于OnHandleCreated的WPF(来自C#)

本文关键字:来自 WPF OnHandleCreated 等价于 | 更新日期: 2023-09-27 17:57:54

对于WPF中的窗口,OnHandleCreated是否有类似于C#中的窗体的等价物?

我的意图是获得窗口的句柄,而不是它的子控件。我想在创建此句柄后访问它。在winforms中,我们可以使用OnHandleCreated在句柄创建后立即获取它。在WPF窗口中有其他选择吗?

如有任何帮助,我们将不胜感激。提前谢谢。

等价于OnHandleCreated的WPF(来自C#)

您可以使用Window.OnSourceInitialized方法:

class MyWindow : Window
{
    protected override void OnSourceInitialized(EventArgs e)
    {
         base.OnSourceInitialized(e);
         var handle = new WindowInteropHelper(this).Handle;
         // -- or --
         var hwndSource = (HwndSource)PresentationSource.FromVisual(this);
         var handle = hwndSource.Handle;
    }
}

HwndSource公开了其他互操作机制,例如为消息循环添加挂钩。如果您不需要,只需使用WindowInteropHelper即可。