我的wpf应用中有多个窗口。我发现我必须经常在各种私有函数中引用这些窗口,如下所示:
var P1 = Application.Current.Windows
.Cast<Window>()
.FirstOrDefault(window => window is Player1Screen) as Player1Screen;
最简单的方法是声明一次,然后随处访问它?
答案 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>();