wpf c#public var of Application.Current.Windows

时间:2015-04-16 00:27:28

标签: c# wpf

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

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

最简单的方法是声明一次,然后随处访问它?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

如果你想要一些可重复使用的东西,你可以创建一个扩展方法来找到窗口......

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>();