【发布时间】:2010-02-13 21:43:17
【问题描述】:
我已经尝试了很多方法来在我的程序中获取我的窗口的静态引用。我需要在运行时从不同的类访问它的所有成员,因此需要静态引用。
我想要像Program.Window1 这样的东西,其中Core 是静态的,MyWindow 是它的静态成员之一。
在 WinForms 中,我通常在 Program.cs 中声明我的静态表单,但这似乎不适用于 WPF 及其自定义“App.xaml”ApplicationDefinition。
我该怎么做?
注意:我已经尝试了多种方法:直接调用新窗口(即Program.Window1 = new Window1())将不起作用,因为我遇到了一些线程无效异常。据我所知,只有 ApplicationDefinitions 可以在 WPF 中启动窗口。
每当我尝试“通过代码”而不是通过默认的 XAML ApplicationDefinition 的 StartupUri 创建窗口时,都会出现以下异常:
调用线程必须是 STA,因为很多 UI 组件都需要这个。
【问题讨论】:
-
如果您需要在代码中创建窗口,则必须使用 [STAThread] 标记 Main 方法。
标签: c# wpf static reference window