WPFコントロール:RadioButton(ラヂオボタン)

コンピュータ

XAML

<StackPanel Grid.Row="1" Margin="20" HorizontalAlignment="Left">
    <RadioButton x:Name="OptionA" 
                    Content="標準モードを使用する" 
                    GroupName="DisplayMode" 
                    IsChecked="False"
                    Checked="Option_Checked"/>

    <RadioButton x:Name="OptionB" 
                    Content="拡張モードを使用する" 
                    GroupName="DisplayMode" 
                    IsChecked="False"
                    Checked="Option_Checked"/>
</StackPanel>

コードビハインド

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    // チェックされた時の処理
    private void Option_Checked(object sender, RoutedEventArgs e)

    {
        // senderをRadioButton型にキャストしてContentを取得
        if (sender is RadioButton rb)
        {
            MessageBox.Show($"「{rb.Content}」が選択されました。");
        }
    }
}

同じGroupNameで一つだけ選択できるボタンです。

GroupNameを指定しない場合、所属するパネル内で一意選択となります。

XAMLでIsCheckedをTrueにすることが出来ますが、

Checkedイベントが発火してしまい、

アプリ起動時にメッセージボックスが表示されれしまいましたので、

サンプルコードではFalseにしています。

データバインディングだとボタンごとにバインドする必要がありそうで、そのままだと使いづらそうですね。
3つ以上の要素がある場合、コンボボックスで代替を検討しても良いかもしれません。

コメント