C# OnHandleCreated的WPF等效值(来自C)

C# OnHandleCreated的WPF等效值(来自C),c#,wpf,C#,Wpf,对于WPF中的窗口,OnHandleCreated是否有类似于C#中表单的窗口 我的意图是获取窗口的句柄,而不是它的子控件。我想在创建此句柄后访问它。在winforms中,我们可以使用OnHandleCreated在句柄创建后立即获取它。在WPF窗口中是否有其他选择 任何帮助都将不胜感激。 提前感谢。您可以使用窗口。OnSourceInitialized方法: class MyWindow : Window { protected override void OnSourceInitia

对于
WPF
中的窗口,
OnHandleCreated
是否有类似于C#中表单的窗口

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

任何帮助都将不胜感激。
提前感谢。

您可以使用
窗口。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

除了
Window
之外,Wpf控件没有
句柄。如果你能说出你想要实现什么,那就更好了。WPF不是winforms。无论您试图做什么,都应该使用WPF自己的机制,而不是试图强迫WPF采用笨拙的winforms方法。请记住,winforms控件是一个子窗口,因此OnHandleCreated是有意义的。而WPF窗口将在一个曲面上渲染所有可视子对象,从而不会生成子窗口对象。正如@SriramSakthivel所指出的,最好能理解你的意图。我的意图是获取窗口的句柄,而不是它的子控件。我想在创建此句柄后访问它。在winforms中,我们可以使用OnHandleCreated在句柄创建后立即获取它。在WPF窗口中是否有其他选择?您的评论与您的问题相同。