「Avalonia UI - Avalonia XML」の版間の差分

ナビゲーションに移動 検索に移動
96行目: 96行目:
<br><br>
<br><br>
== イベントハンドラ ==
== イベントハンドラ ==
==== コードビハインドのバインド ====
イベントをコードビハインドのメソッドにバインドする。<br>
イベントをコードビハインドのメソッドにバインドする。<br>
  <syntaxhighlight lang="xml">
  <syntaxhighlight lang="xml">
  <Button Click="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>

案内メニュー