MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Avalonia UI - Buttonのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Avalonia UI - Button
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <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> == カスタムコントロール == Avalonia UIにおいて、Buttonコントロールを拡張する場合は、カスタムコントロールを作成することが一般的なアプローチである。<br> これにより、標準のButtonコントロールの機能に加えて、独自のプロパティ、メソッド、イベントを追加することができる。<br> <br> 以下の例では、カスタムButtonクラス (ExtendedButtonクラス) にCustomBackgroundプロパティを追加して、それをテンプレートで使用している。<br> また、必要に応じて、他のプロパティおよびロジックを追加してカスタマイズを行うことができる。<br> <br> Avalonia UIでは、コントロールを拡張してソフトウェアのニーズに合わせたカスタマイズを行うことができる。<br> <br> ==== カスタムButtonクラスの作成 ==== まず、Buttonクラスを継承する新しいクラスを作成する。<br> このクラスでは、新しいプロパティ、メソッドを追加して、Buttonコントロールの機能を拡張する。<br> <syntaxhighlight lang="c#"> // ExtendedButton.cs using Avalonia; using Avalonia.Controls; using Avalonia.Media; namespace <任意の名前空間名> { public class <カスタムButtonのクラス名> : Button { public static readonly StyledProperty<Brush> CustomBackgroundProperty = AvaloniaProperty.Register<ExtendedButton, Brush>(nameof(CustomBackground)); public Brush CustomBackground { get => GetValue(CustomBackgroundProperty); set => SetValue(CustomBackgroundProperty, value); } // カスタムロジックやプロパティを追加 // ...略 } } </syntaxhighlight> <br> ==== スタイルとテンプレートの定義 ==== 次に、カスタムButtonクラスの外観を定義するため、スタイルとテンプレートを定義する。<br> これは、Avaloniaのリソース辞書ファイル (例えば、Themesフォルダ内のGeneric.xaml) で行うことができる。<br> <syntaxhighlight lang="xml"> <!-- ExtendedButton.xaml --> <Style xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:<任意の名前空間名>" TargetType="local:<カスタムButtonのクラス名>"> <Setter Property="Template"> <ControlTemplate TargetType="local:<カスタムButtonのクラス名>"> <Border Background="{TemplateBinding CustomBackground}"> <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> </Border> </ControlTemplate> </Setter> </Style> </syntaxhighlight> <br> ==== カスタムButtonクラスの使用 ==== 上記の手順により、カスタムButtonクラスをXAMLおよびコードビハインドで使用することができる。<br> <syntaxhighlight lang="xml"> <!-- MainWindow.axaml --> <Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:<任意の名前空間名>" x:Class="<アプリケーションの名前空間名>.MainWindow"> Title="<アプリケーションのタイトル>" Height="600" Width="1024"> <StackPanel> <local:<カスタムButtonのクラス名> CustomBackground="SkyBlue" Content="Custom Button" /> </StackPanel> </Window> </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:C_Sharp]]
Avalonia UI - Button
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse