方法 : コードを使用してイベント ハンドラを追加する
更新 : 2007 年 11 月
コードを使用して要素にイベント ハンドラを追加する方法を次の例に示します。
イベント ハンドラを XAML 要素に追加する際に、その要素を含むマークアップ ページが既に読み込まれている場合は、コードを使用してハンドラを追加する必要があります。また、コードのみを使用してアプリケーションの要素ツリーを構築し、XAML を使用して要素の宣言をしない場合は、特定のメソッドを呼び出して、構築された要素ツリーにイベント ハンドラを追加することができます。
使用例
最初に定義した既存のページに、新しい Button を追加する XAML での例を次に示します。分離コード ファイルはイベント ハンドラ メソッドを実装し、そのメソッドを新しいイベント ハンドラとして Button に追加します。
C# の例では、+= 演算子を使用してイベントにハンドラを割り当てます。この演算子は、共通言語ランタイム (CLR) のイベント処理モデルでハンドラを割り当てる際に使用する演算子と同じです。Microsoft Visual Basic では、イベント ハンドラを追加する手段としてこの演算子はサポートされていません。代わりに、次の 2 つの手法のいずれかを使用する必要があります。
AddHandler メソッドを AddressOf 演算子と共に使用して、イベント ハンドラ実装を参照します。
イベント ハンドラ定義の一部として Handles キーワードを使用します。この方法はここでは説明しません。「Visual Basic と WPF のイベント処理」を参照してください。
<TextBlock Name="text1">Start by clicking the button below</TextBlock>
<Button Name="b1" Click="MakeButton">Make new button and add handler to it</Button>
Public Partial Class RoutedEventAddRemoveHandler
Private Sub MakeButton(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim b2 As Button = New Button()
b2.Content = "New Button"
AddHandler b2.Click, AddressOf Onb2Click
root.Children.Insert(root.Children.Count, b2)
DockPanel.SetDock(b2, Dock.Top)
text1.Text = "Now click the second button..."
b1.IsEnabled = False
End Sub
Private Sub Onb2Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
text1.Text = "New Button (b2) Was Clicked!!"
End Sub
public partial class RoutedEventAddRemoveHandler {
void MakeButton(object sender, RoutedEventArgs e)
{
Button b2 = new Button();
b2.Content = "New Button";
// Associate event handler to the button. You can remove the event
// handler using "-=" syntax rather than "+=".
b2.Click += new RoutedEventHandler(Onb2Click);
root.Children.Insert(root.Children.Count, b2);
DockPanel.SetDock(b2, Dock.Top);
text1.Text = "Now click the second button...";
b1.IsEnabled = false;
}
void Onb2Click(object sender, RoutedEventArgs e)
{
text1.Text = "New Button (b2) Was Clicked!!";
}
メモ : |
---|
最初に解析した XAML ページでイベント ハンドラを追加すると、非常に簡単です。イベント ハンドラを追加するオブジェクト要素内で、処理するイベント名と一致する属性を追加します。次に、XAML ページの分離コード ファイルで定義したイベント ハンドラ メソッドの名前として、その属性の値を指定します。詳細については、「XAML の概要」または「ルーティング イベントの概要」を参照してください。 |
サンプル全体については、「イベント ハンドラの追加のサンプル」を参照してください。