0

子コントロールの 1 つからルーティング イベントとして発生するイベントが MainWindow にあります。MainWindow には、ルーティングされた発火をキャッチするための AddHandler 呼び出しがあります。

別の子要素からこの同じイベントを発生させたいのですが、この要素 (menuItem) はオンザフライで作成されるため、MainWindow で AddHandler を使用しようとすると、次のようになります。

 this.AddHandler(MyMenuItem.EditExtensionsEvent, new RoutedEventHandler(this.EditExtensions));

MyMenuItem がまだ存在しないため、null 引数の例外が発生します。

ルーティング イベントを引き続き使用できる方法を知っている人はいますか?

4

1 に答える 1

1

MyMenuItem がアプリケーションの名前空間にないか、EditExtensionsEvent がクラス MyMenuItem の静的 RoutedEvent ではないかのいずれかだと思います。

次のようになります。

public class MyMenuItem
{
public static readonly RoutedEvent EditExtensionsEvent
..
}

http://msdn.microsoft.com/en-us/library/ms752288.aspxを参照してください

このように宣言されている場合、ここで示したように機能するはずです

編集: EditExtensionsEvent が適切に機能していることを確認するために、既存のイベントに登録することをお勧めします。

public MainWindow()
{
  ..
  this.AddHandler(MenuItem.ClickEvent, new RoutedEventHandler(this.MenuItemClick));
}

private void MenuItemClick(object sender, RoutedEventArgs e)
{
   MessageBox.Show("Clicked");
}
于 2011-12-21T18:13:41.083 に答える