Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF控件库中的IsHandleCreate属性在哪里?_C#_.net_Wpf_Wpf Controls - Fatal编程技术网

C# WPF控件库中的IsHandleCreate属性在哪里?

C# WPF控件库中的IsHandleCreate属性在哪里?,c#,.net,wpf,wpf-controls,C#,.net,Wpf,Wpf Controls,在我的C#WinForms应用程序中,我会在执行某些操作之前检查控件上的IsHandleCreated,特别是那些来自作为调用目标的代码的操作。我在WPF中没有看到该属性(当前使用TextBlock控件)。WPF中的等效属性或操作是什么,以确保控件在访问之前具有句柄?如果要从异步方法调用UI线程,必须使用 Application.Current.Dispatcher 至于在访问控件之前确保控件具有句柄。。。您需要使用以下代码段: HwndSource hwnd = (HwndSource)Hw

在我的C#WinForms应用程序中,我会在执行某些操作之前检查控件上的IsHandleCreated,特别是那些来自作为调用目标的代码的操作。我在WPF中没有看到该属性(当前使用TextBlock控件)。WPF中的等效属性或操作是什么,以确保控件在访问之前具有句柄?

如果要从异步方法调用UI线程,必须使用

Application.Current.Dispatcher
至于在访问控件之前确保控件具有句柄。。。您需要使用以下代码段:

HwndSource hwnd = (HwndSource)HwndSource.FromVisual(textBox1);

textBox1是wpf控件的名称/id

出于好奇:为什么在WPF世界中需要句柄?您可能正在查找事件。请注意,
HwndSource.FromVisual
为WPF窗口中的所有控件返回相同的HwndSource(因此也是相同的窗口句柄),即包含控件的窗口的句柄。原因是WPF中的控件不是独立的窗口,因为它们通常在WinForms中。我不知道这一点。谢谢。@Clemens这是否意味着我不必像使用WinForms应用程序那样在线程间执行操作时检查控件的窗口句柄是否有效(已创建)?如前所述,WPF控件没有自己的窗口句柄。因此,你不能检查一个。从另一个线程更新UI的调用必须通过Dispatcher完成。