2011-05-26 58 views
0

我创建了一个类中的窗口的实例,但我无法从我的其他类直接访问窗口的实例。WPF查找窗口实例

有没有引用我已经使用C#方法,也许是通过开放的应用程序的窗口搜索,直到找到我试图访问控制板窗口创建的窗口实例的方法吗?

+2

听起来像一般一个贫穷的设计。有可能有更好的方法来完成你想要做的事情。如何首先告诉我们你需要从这个窗口得到什么,以及为什么其他类也需要它?你在做什么是一个可靠的方式来编写脆弱的,紧密耦合的代码。 – 2011-05-26 21:29:31

回答

4

Application.Current.Windows给你所有的窗口,不应该是很难找到使用它的类型。

爱德指出,这听起来不像是很好的设计,所以你可能要考虑如何可以不杂乱的窗口引用办成事情

+0

我可以在哪里构建一个更好的窗口,以便所有方法都可以访问该实例?目前我在一个类中创建实例,但事情已经像你说的那样变得混乱了。我不想在MainWindow中构建窗口,因为它只应该在需要时才创建 - 这是唯一的问题。 – 2011-05-26 21:52:30

+0

你不需要创建它,只需声明一个引用并在你创建窗口后使用它。当然,应该在任何调用该引用的地方检查null,因为它可能还没有包含窗口。 – 2011-05-26 22:00:44

+0

我试着像你说的去做,但参考不包含我的控制面板窗口,当我尝试,因为它还不存在使用它与其他类。我不知道如何解决这个问题,并让班级明白窗口会存在。 – 2011-05-26 23:38:45

5
System.Reflection.Assembly assemby = System.Reflection.Assembly.GetExecutingAssembly(); 
System.Type[] types = assemby.GetTypes(); 
var varWindows = types.ToList() 
    .Where(current => current.BaseType == typeof(Window)); 
MessageBox.Show(varWindows.Count().ToString()); 

Application.Current.Windows得到我们所有实例窗口,但上面的代码让我们所有的窗口。