Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF查找窗口实例_C#_Wpf - Fatal编程技术网

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