我想向指定的窗口发送不同的消息,但我不知道如何识别所有的给定窗口。是否可以使用窗口的“名称”属性?
答案 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" );