2009-10-12 11 views
82

Los formularios de Windows tenían una propiedad win1.Handle que, si no recuerdo mal, devuelve el identificador del manejador de la ventana principal?Encontrar el identificador en una ventana de WPF

¿Hay una forma equivalente de obtener el control de una Ventana de WPF?

me encontré con el siguiente código en línea,

IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle; 

pero no creo que me va a ayudar porque mi aplicación tiene varias ventanas.

Gracias!

+20

te voy a dar un consejo de amigo, Evan. ¡No hagas programación de culto a la carga! Diseca el código que encontraste en línea. Puede ver claramente que pasa Application.Current.MainWindow y, a partir de eso, puede razonar que al pasarle una referencia a una ventana diferente, obtendrá su respuesta. Nunca utilicé WindowInteropHelper, pero aún pude responder a la pregunta simplemente razonándolo. –

+1

¡tienes razón, gracias! Hoy estoy cansado :). – Evan

+5

¡Ningún problema! Y no lo dije como crítica, solo para ser útil. Todos hemos hecho un poco de culto a la carga de vez en cuando. :) –

Respuesta

111

Bueno, en lugar de pasar Application.Current.MainWindow, simplemente pase una referencia a la ventana que desee: new WindowInteropHelper(this).Handle y así sucesivamente.

32

Sólo tiene que utilizar su ventana con la clase WindowsInteropHelper:

// ... Window myWindow = get your Window instance... 
IntPtr windowHandle = new WindowInteropHelper(myWindow).Handle; 

En este momento, usted está pidiendo la ventana principal de la aplicación, de los cuales siempre habrá uno. Sin embargo, puede utilizar esta misma técnica en cualquier ventana, siempre que sea una clase Window derivada de System.Windows.Window.

3

Si desea ventana maneja para TODOS Window s de su aplicación, por alguna razón, puede utilizar la propiedad Application.Windows para llegar a todas las ventanas y luego usar WindowInteropHandler para llegar a sus mangos como ya se ha demostrado.

6

puede utilizar:

Process.GetCurrentProcess().MainWindowHandle 
+5

Él ya afirma que no quiere la ventana principal – EaterOfCode

Cuestiones relacionadas