📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
185行目: 185行目:
<br>
<br>
StackPanelのメソッドの詳細を知りたい場合は、[https://reference.avaloniaui.net/api/Avalonia.Controls/StackPanel/#Methods Avalonia UIの公式Webサイト]を参照すること。<br>
StackPanelのメソッドの詳細を知りたい場合は、[https://reference.avaloniaui.net/api/Avalonia.Controls/StackPanel/#Methods Avalonia UIの公式Webサイト]を参照すること。<br>
<br><br>
== 使用例 ==
以下の例では、StackPanelは垂直方向に要素を配置して、フォーム全体を構成している。<br>
ボタンおよびプルダウンの配置には、水平方向のStackPanelを使用している。<br>
<br>
<syntaxhighlight lang="xml">
<!-- MainWindow.axaml -->
<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="AvaloniaApplication.MainWindow"
        Title="StackPanel サンプル"
        Width="400"
        Height="500">
    <!-- メインのStackPanel - 垂直方向に要素を配置 -->
    <StackPanel Margin="20">
      <!-- ヘッダセクション -->
      <TextBlock Text="ユーザ情報入力"
                  FontSize="24"
                  FontWeight="Bold"
                  Margin="0,0,0,20"/>
      <!-- 入力フォームセクション -->
      <TextBlock Text="氏名:" Margin="0,0,0,5"/>
      <TextBox x:Name="NameTextBox"
                Margin="0,0,0,10"
                Watermark="氏名を入力してください"/>
      <!-- メールアドレス入力セクション -->
      <TextBlock Text="メールアドレス:" Margin="0,0,0,5"/>
      <TextBox x:Name="EmailTextBox"
                Margin="0,0,0,10"
                Watermark="メールアドレスを入力してください"/>
      <!-- 年齢入力セクション -->
      <TextBlock Text="年齢:" Margin="0,0,0,5"/>
      <NumericUpDown x:Name="AgeNumericUpDown"
                      Minimum="0"
                      Maximum="120"
                      Value="20"
                      Margin="0,0,0,20"/>
      <!-- 性別選択セクション - 水平方向のStackPanel -->
      <TextBlock Text="性別:" Margin="0,0,0,5"/>
      <StackPanel Orientation="Horizontal"
                  Spacing="10"
                  Margin="0,0,0,20">
          <RadioButton Content="Male"
                      GroupName="Gender"
                      IsChecked="True"/>
          <RadioButton Content="Female"
                      GroupName="Gender"/>
          <RadioButton Content="その他"
                      GroupName="Gender"/>
      </StackPanel>
      <!-- 趣味選択セクション -->
      <TextBlock Text="趣味:" Margin="0,0,0,5"/>
      <StackPanel Margin="0,0,0,20">
          <CheckBox Content="読書" Margin="0,0,0,5"/>
          <CheckBox Content="スポーツ" Margin="0,0,0,5"/>
          <CheckBox Content="音楽" Margin="0,0,0,5"/>
          <CheckBox Content="旅行" Margin="0,0,0,5"/>
      </StackPanel>
      <!-- ボタンセクション - 水平方向のStackPanel -->
      <StackPanel Orientation="Horizontal"
                  HorizontalAlignment="Right"
                  Spacing="10">
          <Button Content="クリア"
                  Width="100"
                  x:Name="ClearButton"/>
          <Button Content="送信"
                  Width="100"
                  Classes="accent"
                  x:Name="SubmitButton"/>
      </StackPanel>
    </StackPanel>
</Window>
</syntaxhighlight>
<br>
<syntaxhighlight lang="c#">
// MainWindow.axaml.csファイル
using Avalonia.Controls;
using Avalonia.Interactivity;
using MsBox.Avalonia;
namespace AvaloniaApplication
{
    public partial class MainWindow : Window
    {
      public MainWindow()
      {
          InitializeComponent();
          // ボタンのクリックイベントハンドラを設定
          ClearButton.Click  += ClearButton_Click;
          SubmitButton.Click += SubmitButton_Click;
      }
      // クリアボタンを押下した時
      private void ClearButton_Click(object sender, RoutedEventArgs e)
      {
          // 各入力フィールドをクリア
          NameTextBox.Text      = string.Empty;
          EmailTextBox.Text      = string.Empty;
          AgeNumericUpDown.Value = 20;  // デフォルト値に戻す
          // チェックボックスをすべて未選択に
          var checkBoxes = this.FindControl<StackPanel>("HobbiesPanel")
                              .Children.OfType<CheckBox>();
          foreach (var checkbox in checkBoxes)
          {
            checkbox.IsChecked = false;
          }
      }
      // 送信ボタンを押下した時
      private async void SubmitButton_Click(object sender, RoutedEventArgs e)
      {
          // 入力値の検証
          if (string.IsNullOrWhiteSpace(NameTextBox.Text))
          {
            // 警告メッセージを表示
            var msgbox = MessageBoxManager.GetMessageBoxStandard("入力エラー",
                                                                  "氏名を入力",
                                                                  ButtonEnum.Ok,
                                                                  Icon.Warning);
            await msgbox.ShowAsync();
            return;
          }
          if (string.IsNullOrWhiteSpace(EmailTextBox.Text))
          {
            // 警告メッセージを表示
            var msgbox = MessageBoxManager.GetMessageBoxStandard("入力エラー",
                                                                  "メールアドレスを入力",
                                                                  ButtonEnum.Ok,
                                                                  Icon.Warning);
            await msgbox.ShowAsync();
            return;
          }
          // 送信確認のダイアログを表示
          var confirmBox = MessageBoxManager.GetMessageBoxStandard("確認",
                                                                  "入力した情報を送信しますか?",
                                                                  ButtonEnum.YesNo,
                                                                  Icon.Question);
          var result = await confirmBox.ShowAsync();
          if (result == ButtonResult.Yes)
          {
            // ...略 (送信処理)
            // 成功メッセージを表示
            var successBox = MessageBoxManager.GetMessageBoxStandard("送信完了",
                                                                      "情報を正常に送信",
                                                                      ButtonEnum.Ok,
                                                                      Icon.Success);
            await successBox.ShowAsync();
          }
      }
    }
}
</syntaxhighlight>
<br><br>
<br><br>