C# WPF查找窗口实例
我已经在一个类中创建了一个窗口的实例,但是我无法直接从另一个类访问该窗口的实例C# WPF查找窗口实例,c#,wpf,C#,Wpf,我已经在一个类中创建了一个窗口的实例,但是我无法直接从另一个类访问该窗口的实例 是否有方法引用我已经使用C#方法创建的窗口实例,也许搜索打开的应用程序窗口,直到找到我试图访问的仪表板窗口?应用程序。Current.windows提供了所有窗口,使用其类型应该不难找到 (正如Ed指出的那样,这听起来不是很好的设计,所以你可能想考虑如何在没有杂乱的窗口引用的情况下完成工作)应用程序。Current.Windows提供了所有窗口,使用它的类型应该不难找到 (正如Ed指出的,这听起来不是很好的设计,所以
是否有方法引用我已经使用C#方法创建的窗口实例,也许搜索打开的应用程序窗口,直到找到我试图访问的仪表板窗口?
应用程序。Current.windows提供了所有窗口,使用其类型应该不难找到
(正如Ed指出的那样,这听起来不是很好的设计,所以你可能想考虑如何在没有杂乱的窗口引用的情况下完成工作)应用程序。Current.Windows提供了所有窗口,使用它的类型应该不难找到
(正如Ed指出的,这听起来不是很好的设计,所以你可能想考虑如何在没有杂乱的窗口引用的情况下完成事情)
Application.Current.Windows
获取我们所有的实例化窗口,但上面的代码获取我们所有的窗口
Application.Current.Windows
为我们提供了所有实例化的窗口,但上面的代码为我们提供了所有的窗口。总体上听起来像是一个糟糕的设计。可能有更好的方法来完成你想做的事情。首先告诉我们你需要从那个窗口得到什么,以及为什么其他类也需要它?您正在做的是编写脆弱的、紧密耦合的代码。我建议在主窗口上使用单例模式,就像一般糟糕的设计一样。可能有更好的方法来完成你想做的事情。首先告诉我们你需要从那个窗口得到什么,以及为什么其他类也需要它?您正在做的是编写脆弱的、紧密耦合的代码。我建议在主窗口中使用单例模式,在哪里可以在更好的位置构造窗口,以便所有方法都可以访问实例?目前我在一个类中创建实例,但是事情已经变得像你说的那样混乱。我不想在主窗口中构造窗口,因为它只应在需要时创建-这是唯一的问题。您不需要创建它,只需声明一个引用并在初始化窗口后使用它。当然,在对该引用的任何调用中都应该检查null,因为它可能还不包含窗口。我尝试按照您所说的那样执行此操作,但是当我尝试从其他类使用它时,该引用不包含我的仪表板窗口,因为它还不存在。我不知道如何才能绕过这个问题,让全班同学明白窗口是存在的。你不应该哄骗全班同学认为窗口是存在的,因为它不一定存在。正如我所说的,在任何情况下,当你得到引用时,你首先要检查它是否指向null。如果这是一个问题,因为窗口应该存在,那么为什么不创建它呢?无论如何,如果所有这些仍然是一个问题,你可能有一个糟糕的设计。我设法在一个公共位置创建了窗口引用,而B类接受了这个实例是在a类中创建的。谢谢你的帮助。我在哪里可以在更好的地方构建窗口,以便所有方法都可以访问实例?目前我在一个类中创建实例,但是事情已经变得像你说的那样混乱。我不想在主窗口中构造窗口,因为它只应在需要时创建-这是唯一的问题。您不需要创建它,只需声明一个引用并在初始化窗口后使用它。当然,在对该引用的任何调用中都应该检查null,因为它可能还不包含窗口。我尝试按照您所说的那样执行此操作,但是当我尝试从其他类使用它时,该引用不包含我的仪表板窗口,因为它还不存在。我不知道如何才能绕过这个问题,让全班同学明白窗口是存在的。你不应该哄骗全班同学认为窗口是存在的,因为它不一定存在。正如我所说的,在任何情况下,当你得到引用时,你首先要检查它是否指向null。如果这是一个问题,因为窗口应该存在,那么为什么不创建它呢?无论如何,如果所有这些仍然是一个问题,你可能有一个糟糕的设计。我设法在一个公共位置创建了窗口引用,而B类接受了这个实例是在a类中创建的。谢谢你的帮助。
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());