イベントハンドラの登録を記述する場所

ボタンのクリックイベントなどに登録する場合以下の二通りの方法gああります。

  • XAMLに直接記述する方法
  • xaml.csコードに記述する方法

XAMLに直接記述する方法

XAMLに記述する場合、下記のように行います。

 <Button x:Name="BtnSample" Content="Sample" Click="BtnSample_Click"/>
private void BtnSample_Click(object sender, RoutedEventArgs e)
{
}

プロパティウィンドウでイベント管理

xaml.csコードに記述する方法

xaml.csコードに記述する場合、下記のように行います。

private void RegistorEventHadler()
{
    BtnSample.Click += new RoutedEventHandler(BtnSample_Click);
}

private void BtnSample_Click(object sender, RoutedEventArgs e)
{

}
  • メリット
    • 「すべての参照の検索」で、イベントハンドラが使用されていることを検出できる。
    • イベントハンドラをイベントから削除したいときなどに、同じコードファイル内に、登録と削除を集約できる。
  • デメリット
    • VisualStudioのプロパティでイベント管理できない。

どちらの方式が良いのか?

個人的には、xaml.csにイベントハンドラの登録を記述する方法が気に入っています。
登録する場合だけではなく、Storyborad実行中に一時的にイベントハンドラを削除したいときもあります。このような場合に、イベントハンドラの登録と削除を別々のファイル(クラス)で行ってしまうと管理が大変になってしまう、などの理由からです。
しかし、これはある程度好みの問題もあるので、どちらの方法をとっても問題はないと思います。要はどちらの方法をとるにせよ、ひとつのアプリケーションで統一されていれば、それで良いからです。