如何使 Window var 全局

How to make Window var global

我正在使用一段代码来编辑另一个 window,例如位于内部的文本框:

var MessageBox_Window = System.Windows.Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MessageBoxWindow) as MessageBoxWindow;

我需要能够不断更改这个 window 的内容,但是我不能将 var 放在部分 class 中,如果我把它放在其他任何地方,它就不是全局的。如果我要使用:

ProjectName.MessageBoxWindow MessageBox_Window = System.Windows.Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MessageBoxWindow) as MessageBoxWindow;

在部分 class 中,每当我尝试更改内容时,我都会得到 NullReferenceException.

有没有办法使此代码成为全局代码,以便可以从 window 中的任何地方访问它?

使用 static class:

static class globalClass
{
    public static string globalData { get; set; }
}

并设置它:

globalClass.globalData = "some value"

正如 Servy 所说,您不应该直接使用那个 window(并且从另一个线程而不是那个 window 的 UI 线程这样做是不可能的)。

考虑拥有一个包含您要共享的所有参数的 class。您的 MessageBoxWindow 负责根据这些参数自行绘制,而其他 windows 可以自由更改它们。