0

指定されたウィンドウに別のメッセージを送信したいのですが、すべてから特定のウィンドウを識別する方法がわかりません。ウィンドウの「名前」のプロパティを使用する方法はありますか?

4

2 に答える 2

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

ほんの一例です。

于 2012-05-23T13:33:30.927 に答える
0

もう1つのオプションは、リフレクションを使用してWindows、実行中のアセンブリ内のすべてを検索することです。

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

Windowsのコレクションを入手したら、それらのいずれかを名前で見つけることができます。

Window win = windows.SingleOrDefault( x => x.Name == "MyName" );
于 2012-05-23T13:47:56.513 に答える