「Avalonia UI - ダイアログ」の版間の差分

ナビゲーションに移動 検索に移動
140行目: 140行目:
           await MessageBoxManager.GetMessageBoxStandard("結果", "キャンセルボタンが押下された").ShowAsync();
           await MessageBoxManager.GetMessageBoxStandard("結果", "キャンセルボタンが押下された").ShowAsync();
       }
       }
    }
}
</syntaxhighlight>
<br><br>
== カスタムメッセージボックス ==
==== プロパティ ====
カスタムメッセージボックスでは、多くのプロパティや設定を追加して、より柔軟で機能的なメッセージボックスを定義することができる。<br>
<br>
===== ウインドウのプロパティ =====
* Width / Height
*: ウインドウの固定サイズを設定
* MinWidth / MinHeight
*: 最小サイズを設定
* MaxWidth / MaxHeight
*: 最大サイズを設定
* WindowStartupLocation
*: ウインドウの初期位置を指定
*: 例: 中央、オーナーの中央
* Topmost
*: 常に最前面に表示するかどうかを指定する。
* ShowInTaskbar
*: タスクバーに表示するかどうかを指定する。
* CanResize
*: ユーザによるリサイズを許可するかどうかを指定する。
* SystemDecorations
*: ウインドウの装飾 (最小化、最大化、閉じるボタン) の表示設定
<br>
===== コンテンツのレイアウト =====
* Padding
*: ウイィンドウ内のコンテンツの余白
* Margin
*: 各コントロールの外側の余白
* HorizontalAlignment / VerticalAlignment
*: コンテンツの水平・垂直方向の配置
* Spacing
*: StackPanel内の要素間の間隔
<br>
===== テキストブロックのプロパティ =====
* FontSize
*: フォントサイズ
* FontWeight
*: フォントの太さ
* FontFamily
*: フォントファミリー
* Foreground
*: テキストの色
* TextWrapping
*: テキストの折り返し設定
* TextAlignment
*: テキストの配置
<br>
===== ボタンのプロパティ =====
* Width / Height
*: ボタンのサイズ
* Background
*: ボタンの背景色
* Foreground
*: ボタンのテキスト色
* BorderBrush / BorderThickness
*: ボタンの枠線の色と太さ
* CornerRadius
*: ボタンの角の丸み
<br>
===== アイコンとイメージ =====
メッセージボックスにアイコンやイメージを追加する。<br>
例: 警告、エラー、情報等<br>
<br>
===== 複数のボタン =====
* [OK]、[キャンセル]、[Yes]、[NO]等の複数のボタンを追加する。
* 各ボタンに対応するDialogResultを設定する。
<br>
===== カスタムスタイル =====
* Styleプロパティを使用して、ウインドウや各コントロールにカスタムスタイルを適用する。
<br>
===== アニメーション =====
* 表示時や閉じる時のアニメーション効果を追加する。
<br>
===== キーボードショートカット =====
[Esc]キーでウインドウを閉じる等、キーボードショートカットを設定する。<br>
<br>
===== アクセシビリティ =====
AutomationProperties.NameやAutomationProperties.HelpTextを使用して、スクリーンリーダーのサポートを改善する。<br>
<br>
==== 使用例 ====
以下の例では、Avalonia UIを使用してカスタムメッセージボックスを定義している。<br>
<br>
"OK"という名前のボタンを検索しているため、ボタンにNameプロパティに"OK"を設定する、あるいは、別の方法でボタンを参照する必要があることに注意する。<br>
<br>
<syntaxhighlight lang="c#">
// メッセージボックスを表示するヘルパーメソッド
// タイトルとメッセージを受け取り、カスタムメッセージボックスを非同期に表示する
private async Task ShowMessageAsync(string title, string message)
{
    await new MessageBoxWindow(title, message).ShowDialog(this);
}
// シンプルなメッセージボックスウィンドウのクラス
public class MessageBoxWindow : Window
{
    public MessageBoxWindow(string title, string message)
    {
      Title = title;
      // ウインドウのサイズは内容に合わせて自動調整される
      SizeToContent = SizeToContent.WidthAndHeight;
      // StackPanelを使用して、本文と[OK]ボタンを縦に配置
      Content = new StackPanel
      {
          Children =
          {
            new TextBlock { Text = message, Margin = new Thickness(20) },
            new Button { Content = "OK", HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center, Margin = new Thickness(0, 0, 0, 20) }
          }
      };
      // [OK]ボタンがクリックされた時にウインドウを閉じるイベントハンドラを設定
      this.FindControl<Button>("OK").Click += (sender, args) => Close();
     }
     }
  }
  }

案内メニュー