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

时间:2012-05-23 13:29:20

标签: c# wpf

我想向指定的窗口发送不同的消息,但我不知道如何识别所有的给定窗口。是否可以使用窗口的“名称”属性?

2 个答案:

答案 0 :(得分:0)

您可以创建自己的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();
}

只是示例。

答案 1 :(得分:0)

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

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

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

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