13,005
回編集
(ページの作成:「== 概要 == <br><br> == カスタムコントロール == Avalonia UIにおいて、Buttonコントロールを拡張する場合は、カスタムコントロールを作成することが一般的なアプローチである。<br> これにより、標準のButtonコントロールの機能に加えて、独自のプロパティ、メソッド、イベントを追加することができる。<br> <br> 以下の例では、カスタムButtonクラス (ExtendedBu…」) |
(→概要) |
||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
<br><br> | |||
== Buttonコントロール == | |||
==== Buttonコントロールとは ==== | |||
ボタンはカーソルポインタの操作に反応するコントロールである。<br> | |||
カーソルポインタが下にある時、ボタンが押下された状態で視覚的なフィードバックを表示する。<br> | |||
<br> | |||
カーソルポインタが下がってから離すまでのシーケンスはクリックと解釈され、この動作は設定可能である。<br> | |||
<br> | |||
ボタンは、コードビハインドでClickイベントを発生させることができる。<br> | |||
<br> | |||
また、<code>command</code>プロパティに<code>ICommand</code>インターフェースのインスタンスをバインドすることもできる。<br> | |||
バインドされたコマンドは、ボタンがクリックされるたびに実行される。<br> | |||
<br> | |||
<u>※注意</u><br> | |||
<u>ユーザによってボタンが押下されたかどうかを判断する場合は、<code>PointerPressed</code>イベントではなく、常に<code>Click</code>イベントを使用すること。</u><br> | |||
<u><code>Click</code>イベントは、ボタンが押下されたことを示すボタン固有の高レベルのイベントである。</u><br> | |||
<u><code>PointerPressed</code>イベントは低レベルの入力イベントであり、<code>Click</code>イベントを発生させるためにButtonコントロールが内部的に処理する必要があるものである。</u><br> | |||
<br> | |||
<u>Buttonコントロールは<code>PointerPressed</code>イベントを処理するため (<code>IsHandled</code>プロパティが<code>true</code>になる)、他のコントロールのようにアプリケーションがこのイベントを受け取ることはない。</u><br> | |||
<br> | |||
Buttonコントロールに関する完全なAPIドキュメントは、[https://reference.avaloniaui.net/api/Avalonia.Controls/Button/ Avalonia UIの公式ドキュメント]を参照すること。<br> | |||
<br> | |||
==== イベント ==== | |||
Avalonia UIにおけるイベントは、ユーザインタラクションやコントロール固有のアクションに応答する方法を提供する。<br> | |||
<br> | |||
以下の例では、Buttonコントロールにおいて、ClickイベントにonBtnClickedイベントハンドラを追加している。<br> | |||
<br> | |||
イベントをサブスクライブするには、コントロールで処理したいイベントを特定する。<br> | |||
Avalonia UIの多くのコントロールは、ClickイベントやSelectionChangedイベント等の様々なイベントを公開している。<br> | |||
XAMLでコントロールの場所を特定して、イベントの名前とイベントハンドラメソッドの名前を示す値を持つ属性を追加することにより、イベントをサブスクライブする。<br> | |||
<syntaxhighlight lang="xml"> | |||
<!-- MainWindow.axaml --> | |||
<Window xmlns="https://github.com/avaloniaui" | |||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||
x:Class="AvaloniaApplication1.Views.MainWindow"> | |||
<StackPanel Margin="20"> | |||
<Button Name="myButton" Content="Click Me" Click="onBtnClicked" /> | |||
<Button Click="onBtnClicked2">Click Me 2!</Button> | |||
<TextBlock Margin="0 10" x:Name="message">Ready...</TextBlock> | |||
</StackPanel> | |||
</Window> | |||
</syntaxhighlight> | |||
<br> | |||
イベントハンドラを実装するには、イベントがトリガーされた時に実行されるイベントハンドラをコードビハインドに記述する。<br> | |||
<syntaxhighlight lang="c#"> | |||
// MainWindow.axaml.cs | |||
public partial class MainWindow : Window | |||
{ | |||
public MainWindow() | |||
{ | |||
InitializeComponent(); | |||
} | |||
private void onBtnClicked(object sender, RoutedEventArgs e) | |||
{ | |||
message.Text = "Button clicked!"; | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== プロパティ ==== | |||
Buttonコントロールのプロパティにおいて、使用される頻度の高いプロパティを以下に示す。<br> | |||
<br> | |||
* <code>ClickMode</code>プロパティ | |||
*: ボタンが押下された時、どのように反応するかを記述する。 | |||
* <code>Command</code>プロパティ | |||
*: ボタンが押下された時、呼び出される<code>ICommand</code>インターフェースのインスタンス。 | |||
<br><br> | <br><br> | ||