RadioButton(ラジオボタン)とは
RadioButton(ラジオボタン)とは、とあるグループの中から1つの項目を選択させるためのコントロールです。例えば、性別グループの「男性」「女性」「その他」を選ばせるみたいな感じのやつです。
グルーピング
基本的に同一のコンテナ(パネル等)上にあるラジオボタンは同一のグループと認識され、その中の1つの項目のみを選択することができます。
<StackPanel Margin="10">
    <RadioButton x:Name="ARadioButton"
                 Content="AAA" FontSize="20"/>
    <RadioButton x:Name="BRadioButton"
                 Content="BBB"
                 FontSize="20"/>
</StackPanel>
<StackPanel> <StackPanel Margin="10"> <RadioButton x:Name="ARadioButton" Content="AAA" FontSize="20"/> <RadioButton x:Name="BRadioButton" Content="BBB" FontSize="20"/> </StackPanel> <StackPanel Margin="10"> <RadioButton x:Name="CRadioButton" Content="CCC" FontSize="20"/> <RadioButton x:Name="DRadioButton" Content="DDD" FontSize="20"/> </StackPanel> </StackPanel>
パネルを2つに分けたため、AAA、BBBのグループとCCC、DDDのグループで別々に動作します。
GroupName
GroupNameプロパティを指定すると、同一のコンテナ(パネル等)上にあっても、別のグループとして動作させることができます。
<StackPanel Margin="10">
    <RadioButton x:Name="CRadioButton"
                 Content="CCC" FontSize="20"/>
    <RadioButton x:Name="DRadioButton" 
                 Content="DDD" FontSize="20"/>
    <RadioButton x:Name="ERadioButton" 
                 Content="EEE" FontSize="20"
                 GroupName="1"/>
    <RadioButton x:Name="FRadioButton" 
                 Content="FFF" FontSize="20"
                 GroupName="1"/>
</StackPanel>
4つのラジオボタンが同一のパネル上にありますが、EEEとFFFにGroupNameを指定しているため、CCC、DDDのグループと、EEE、FFFのグループは別グループとして動作します。
状態
状態は、チェックボックスと同様にIsCheckedで確認できます。内容はTrue、False、null(未確定)の3種類です。
イベント
イベントはChecked、Uncheckedで通知されます。Indeterminateの通知も受けることができますが、あまり用途はないような気がします。
サンプルコード
<Window x:Class="WPF015.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPF015"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="300">
    <Grid>
        <StackPanel>
            <StackPanel Margin="10">
                <RadioButton x:Name="ARadioButton"
                             Content="AAA" FontSize="20"
                             Checked="ARadioButton_Checked"/>
                <RadioButton x:Name="BRadioButton"
                             Content="BBB"
                             FontSize="20"
                             Checked="BRadioButton_Checked"/>
            </StackPanel>
            <StackPanel Margin="10">
                <RadioButton x:Name="CRadioButton"
                             Content="CCC" FontSize="20"
                             Checked="CRadioButton_Checked"/>
                <RadioButton x:Name="DRadioButton" Content="DDD" FontSize="20"
                             Checked="CRadioButton_Checked"/>
                <RadioButton x:Name="ERadioButton" Content="EEE" FontSize="20"
                             GroupName="1"/>
                <RadioButton x:Name="FRadioButton" Content="FFF" FontSize="20"
                             GroupName="1"/>
            </StackPanel>
        </StackPanel>
    </Grid>
</Window>
AAAとBBBはそれぞれにCheckedイベントを実装。CCC、DDDはCRadioButton_Checkedという同じCheckedイベントを実装。
using System.Windows;
using System.Windows.Controls;
namespace WPF015
{
    ///
    /// MainWindow.xaml の相互作用ロジック
    /// 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void ARadioButton_Checked(object sender, RoutedEventArgs e)
        {
        }
        private void BRadioButton_Checked(object sender, RoutedEventArgs e)
        {
        }
        private void CRadioButton_Checked(object sender, RoutedEventArgs e)
        {
            var radioButton = sender as RadioButton;
            if(radioButton == CRadioButton)
            {
            }
            else if(radioButton == DRadioButton)
            {
            }
        }
    }
}
ARadioButtonとBRadioButtonはそれぞれのCheckedイベントにチェック状態になると通知されますが、CRadioButtonとDRadioButtonは同一のCRadioButton_Checkedに通知されるため、イベントの中で、どちらの通知かを判断して処理をすることができます。
<画面イメージ>
- C#WPFの道#1!WPFのプロジェクト作成方法をわかりやすく解説!
 - C#WPFの道#2!StackPanelの使い方をわかりやすく解説!
 - C#WPFの道#3!Gridの使い方をわかりやすく解説!
 - C#WPFの道#4!コントロールの名前の付け方をわかりやすく解説!
 - C#WPFの道#5!イベントの定義の仕方をわかりやすく解説!
 - C#WPFの道#6!リソースとStaticResourceの定義と使い方をわかりやすく解説!
 - C#WPFの道#7!コントロールのスタイル定義のやり方をわかりやすく解説!
 - C#WPFの道#8!グループごとのスタイル定義とBasedOnでの継承のやり方!
 - C#WPFの道#9!SQLiteの使い方をわかりやすく解説!
 - C#WPFの道#10!ListViewの使い方をわかりやすく解説!
 - C#WPFの道#11!ListViewのフィルタリングの方法を解説!
 - C#WPFの道#12!SQLiteとListViewでマスタ設定画面の作成!
 - C#WPFの道#13!Buttonに画像と文字を並べる方法とRepeatButtonとToggleButton
 - C#WPFの道#14!CheckBoxとIsThreeState、Indeterminateの使い方
 - C#WPFの道#15!RadioButtonの書き方と使い方を解説
 - C#WPFの道#16!Expanderの書き方と使い方を解りやすく解説
 - C#WPFの道#17!GroupBoxの書き方と使い方を解りやすく解説
 - C#WPFの道#18!Slider(スライダー)の書き方と使い方を解りやすく解説
 - C#WPFの道#19!ProgressBarの書き方と使い方を解りやすく解説
 - C#WPFの道#20!ComboBoxの書き方と使い方を解りやすく解説
 - C#WPFの道#21!ListBoxの書き方と使い方を解りやすく解説
 - C#WPFの道#22!TabControlの書き方と使い方を解りやすく解説
 - C#WPFの道#23!TreeViewの書き方と使い方を解りやすく解説
 - C#WPFの道#24!TextBlock,TextBoxの改行と文字の加工を解説
 - C#WPFの道#25!Menuの書き方と使い方をわかりやすく解説!
 - C#WPFの道#26!ToolBarの書き方と使い方をわかりやすく解説!
 - C#WPFの道#27!StatusBarの書き方と使い方をわかりやすく解説!
 - C#WPFの道#28!WrapPanelの書き方と使い方をわかりやすく解説!
 - C#WPFの道#29!DockPanelの書き方と使い方をわかりやすく解説!
 - C#WPFの道#30!Canvasの書き方と使い方をわかりやすく解説!
 
											