wpf,我在运行时动态创建许多窗口窗体,但是我如何获取这些窗口窗体的标识

本文关键字:窗体 窗口 获取 标识 何获取 动态 运行时 创建 许多 wpf | 更新日期: 2023-09-27 18:35:01

我想向指定的窗口发送不同的消息,但我不知道如何从所有窗口中识别给定的窗口。使用窗口属性"名称"的方法是什么?

wpf,我在运行时动态创建许多窗口窗体,但是我如何获取这些窗口窗体的标识

您可以创建自己的 Window 类

public class MyCoolWindow : Window
{
   public string WindowKey {get;set;}
}

并在每个窗口上创建一个新窗口到 glbal 集合,例如:

var windows = new List<MyCoolWindow>(); 
public void AddAndShowWindow(MyCoolWindow wnd)
{        
    windows.Add(wnd);
    wnd.Show();
}

查找窗口,例如

public MyCoolWindow FindWindowByKey(string windowKey)
{
    return windows.Where(w=>w.WindowKey == windowKey).SelectSingleOrDefault();
}

举个例子。

另一种选择是使用反射来查找正在执行的程序集中的所有Windows

var windows = System.Reflection.Assembly.GetExecutingAssembly()
             .GetTypes().OfType<Window>();

获得 Windows 集合后,您可以按名称找到其中任何一个:

Window win = windows.SingleOrDefault( x => x.Name == "MyName" );