13,009
回編集
(→概要) |
|||
96行目: | 96行目: | ||
<br><br> | <br><br> | ||
== イベントハンドラ == | == イベントハンドラ == | ||
==== コードビハインドのバインド ==== | |||
イベントをコードビハインドのメソッドにバインドする。<br> | イベントをコードビハインドのメソッドにバインドする。<br> | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<Button Click=" | <!-- 基本的な構文 --> | ||
<コントロール名 イベント名="コードビハインドで定義されたメソッド名"/> | |||
<!-- ボタンのクリックイベントをバインドする場合 --> | |||
<!-- OnButtonClickedというメソッドがコードビハインドに存在する必要がある --> | |||
<Button Click="OnButtonClicked">Click me</Button> | |||
</syntaxhighlight> | |||
<br> | |||
コードビハインドでの対応するメソッドは、以下に示すように定義する。<br> | |||
<br> | |||
イベントハンドラメソッドは、2つのパラメータを受け取る。<br> | |||
* sender | |||
*: イベントを発生させたオブジェクト | |||
* e | |||
*: イベント固有の追加情報を含むイベント引数 | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
public partial class MainWindow : Window | |||
{ | |||
public MainWindow() | |||
{ | |||
InitializeComponent(); | |||
} | |||
private void OnButtonClicked(object sender, RoutedEventArgs e) | |||
{ | |||
// イベントハンドラのロジックをここに記述 | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
<u>※注意</u><br> | |||
* メソッド名の一致 | |||
*: Avalonia XMLで指定したメソッド名とコードビハインドのメソッド名が完全に一致している必要がある。 | |||
* アクセス修飾子 | |||
*: イベントハンドラメソッドは、<code>private</code> または <code>protected</code> として定義する。 | |||
* 部分クラス | |||
*: コードビハインドクラスは<code>partial</code>として定義することにより、XMLファイルと関連付けられる。 | |||
* 名前空間 | |||
*: XMLファイルとコードビハインドファイルが同じ名前空間にあることを確認する。 | |||
<br> | |||
==== コマンドバインディング ==== | |||
直接イベントハンドラをバインドする代わりに、コマンドを使用することもできる。<br> | |||
<br> | |||
<syntaxhighlight lang="xml"> | |||
<Button Command="{Binding MyCommand}">Execute Command</Button> | |||
</syntaxhighlight> | |||
<br> | |||
==== イベント引数の変換 ==== | |||
<code>x:Arguments</code>を使用して、イベント引数を変換または追加することができる。<br> | |||
<br> | |||
<syntaxhighlight lang="xml"> | |||
<Button Click="OnButtonClicked"> | |||
i:Interaction.Behaviors> | |||
<ia:EventTriggerBehavior EventName="Click"> | |||
<ia:InvokeCommandAction Command="{Binding MyCommand}"> | |||
<ia:InvokeCommandAction.CommandParameter> | |||
<x:Arguments> | |||
<x:String>Custom Parameter</x:String> | |||
</x:Arguments> | |||
</ia:InvokeCommandAction.CommandParameter> | |||
</ia:InvokeCommandAction> | |||
</ia:EventTriggerBehavior> | |||
</i:Interaction.Behaviors> | |||
</Button> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> |