wpf c#Application.Current.Windows的public var

lf5gs5x2  于 12个月前  发布在  C#
关注(0)|答案(2)|浏览(137)

我在wpf应用程序中有多个窗口。我发现我必须在各种私有函数中不断引用这些窗口,如下所示:

var P1 = Application.Current.Windows
        .Cast<Window>()
        .FirstOrDefault(window => window is Player1Screen) as Player1Screen;

字符串
什么是最简单的方法来声明一次,然后在任何地方访问它?

lrl1mhuk

lrl1mhuk1#

你可以在你的项目的任何类中通过一个公共静态属性来公开它(例如App类):

public static Player1Screen Player1Screen
{
    get
    {
        return Application.Current.Windows
            .OfType<Player1Screen>()
            .FirstOrDefault();
    }
}

字符串
请注意,我稍微简化了代码。

epggiuax

epggiuax2#

如果你想要一些更可重用的东西,你可以创建一个扩展方法来查找窗口。

public static class AppEx
{
    public T FindWindowOfType<T>(this Application app) where T:Window
    {
        return app.Windows.OfType<T>().FirstOrDefault();
    }
}

字符串
所以现在:

Player1Screen win = Application.Current.FindWindowOfType<Player1Screen>();

相关问题