Ho provato un sacco di modi per ottenere un riferimento statico della mia finestra sul mio programma. Ho bisogno di accedere a tutti i suoi membri in fase di runtime da classi diverse, quindi è necessario un riferimento statico.Come ottenere un riferimento statico a una finestra WPF?
Quello che mi piacerebbe avere è qualcosa come Program.Window1
, dove Core
è statico e MyWindow
è uno dei suoi membri statici.
In WinForms, in genere dichiaro il mio modulo statico in Program.cs, ma questo non sembra funzionare con WPF e la loro applicazione personalizzata "App.xaml" ApplicationDefinition.
Come posso farlo?
Nota: ho già provato un certo numero di modi: l'utilizzo di una chiamata diretta a una nuova finestra (ad esempio Program.Window1 = new Window1()
) non funzionerà, in quanto ottengo qualche eccezione di invalidità del thread. Come ho capito finora, solo ApplicationDefinitions può avviare Windows in WPF.
Ecco l'eccezione ogni volta che provo a creare una finestra "di codice" e non secondo le impostazioni di StartupUri del XAML ApplicationDefinition:
Il thread chiamante deve essere STA, perché molti componenti dell'interfaccia utente richiedono questo.
È necessario contrassegnare il metodo Main con [STAThread] se è necessario creare finestre nel codice. –