He intentado una gran cantidad de formas de obtener una referencia estática de mi ventana en mi programa. Necesito acceder a todos sus miembros en tiempo de ejecución desde diferentes clases, por lo que se necesita una referencia estática.¿Cómo obtener una referencia estática a una ventana de WPF?
Lo que me gustaría tener es algo así como Program.Window1
, donde Core
es estático y MyWindow
es uno de sus miembros estáticos.
En WinForms, generalmente declaro mi forma estática en Program.cs, pero esto no parece funcionar con WPF y su ApplicationDefinition "App.xaml" personalizada.
¿Cómo puedo hacerlo?
Nota: Ya lo he intentado de varias maneras: el uso de una llamada directa a una nueva ventana (es decir, Program.Window1 = new Window1()
) no funcionará, ya que obtengo una excepción de invalidez de subprocesos. Como entiendo hasta ahora, solo ApplicationDefinitions puede iniciar Windows en WPF.
Aquí es la excepción siempre que intente crear una ventana "por el código" y no por el valor por defecto de StartupUri XAML ApplicationDefinition:
El subproceso de llamada debe ser STA, debido a que muchos componentes de interfaz de usuario requieren.
Tiene que marcar el método Principal con [STAThread] si necesita crear ventanas en el código. –