RadioButtonコントロールは、複数の選択肢の中から1つをユーザーに選択してもらうときに使うコントロールです。RadioButtonコントロールは、デフォルトでは同じパネル(StaciPanelやGridなど)にあるRadioButtonコントロールから、1つだけチェックをつけることが出来ます。また、一度つけてしまったチェックは、ユーザーからは確認できないという特徴があります。チェック状態はCheckBoxコントロールと同様にIsCheckedプロパティで確認でき、Checkedイベントでチェック状態に変更があったことをハンドリングできます。
以下にRadioButtonコントロールの基本的な使い方を示します。1つのStackPanel上に置いたRadioButtonコントロールにCheckedイベントのハンドラを設定しています。
<GroupBox Header="Group1"><StackPanel><RadioButton Content="Button1"Checked="RadioButton_Checked"/><RadioButton Content="Button2"Checked="RadioButton_Checked" /><RadioButton Content="Button3"Checked="RadioButton_Checked"/><TextBlock x:Name="textBlockSelected" /></StackPanel></GroupBox>
RadioButton_Checkedイベントハンドラでは、senderを使って選択されたRadioButtonコントロールを取得してtextBlockSelectedにContentの内容を表示しています。
privatevoid RadioButton_Checked(object sender, RoutedEventArgs e) { var radioButton = (RadioButton)sender; this.textBlockSelected.Text = radioButton.Content.ToString(); }
実行すると初期状態では、どのRadioButtonコントロールにもチェックは入っていません。
マウスで選択すると、選択した項目のContentが、下部に表示されます。
同じパネル上で複数のグループを作成する方法
デフォルトの挙動では、同じパネルに置いたRadioButtonコントロールは、1つしか選択できません。この制限を回避するために、GroupNameというプロパティがあります。GroupNameに文字列を指定すると、同じGroupNameのRadioButtonコントロールの中から1つ選択できるという挙動になります。
以下に、1つのStackPanel上に2つの異なるGroupNameを指定したXAMLを示します。
<GroupBox Header="Group2"><StackPanel><RadioButton GroupName="group1"Content="Button1-1" /><RadioButton GroupName="group1"Content="Button1-2" /><RadioButton GroupName="group1"Content="Button1-3" /><RadioButton GroupName="group2"Content="Button2-1" /><RadioButton GroupName="group2"Content="Button2-2" /><RadioButton GroupName="group2"Content="Button2-3" /></StackPanel></GroupBox>
実行して、group1とgroup2のRadioButtonコントロールをそれぞれ選択した結果を以下に示します。
同一パネル上でも、複数のRadioButtonコントロールのグループが出来ていることが確認できます。
過去記事
- WPF4.5入門 その1 「はじめに」
- WPF4.5入門 その2 「WPFとは」
- WPF4.5入門 その3 「Hello world」
- WPF4.5入門 その4 「Mainメソッドはどこにいった?」
- WPF4.5入門 その5 「全てC#でHello world」
- WPF4.5入門 その6 「WPFを構成するものを考えてみる」
- WPF4.5入門 その7 「XAMLのオブジェクト要素と名前空間」
- WPF4.5入門 その8 「オブジェクト要素のプロパティ」
- WPF4.5入門 その9 「コレクション構文」
- WPF4.5入門 その10 「コンテンツ構文」
- WPF4.5入門 その11 「マークアップ拡張」
- WPF4.5入門 その12 「その他のXAMLの機能」
- WPF4.5入門 その13 「簡単なレイアウトを行うコントロール」
- WPF4.5入門 その14 「レイアウトコントロールのCanvasとStackPanel」
- WPF4.5入門 その15 「レイアウトコントロールのDockPanelとWrapPanel」
- WPF4.5入門 その16 「ViewBoxコントロール」
- WPF4.5入門 その17 「ScrollViewerコントロール」
- WPF4.5入門 その18 「Gridコントロール part 1」
- WPF4.5入門 その19 「Gridコントロール part 2」
- WPF4.5入門 その20 「レイアウトに影響を与えるプロパティ」
- WPF4.5入門 その21 「WPFのコンセプトと重要な機能つまみ食い」
- WPF4.5入門 その22 「Buttonコントロール」
- WPF4.5入門 その23 「DataGridコントロール その1」
- WPF4.5入門 その24 「DataGridコントロール その2」
- WPF4.5入門 その25 「TreeViewコントロール その1」
- WPF4.5入門 その26 「TreeViewコントロール その2」
- WPF4.5入門 その28 「Calendarコントロール」 - かずきのBlog@hatena
- WPF4.5入門 その29 「ContextMenuコントロール」 - かずきのBlog@hatena
- WPF4.5入門 その30「Menuコントロール」 - かずきのBlog@hatena
- WPF4.5入門 その31 「ToolBarコントロール」 - かずきのBlog@hatena
- WPF4.5入門 その32 「CheckBoxコントロール」 - かずきのBlog@hatena
- WPF4.5入門 その33 「ComboBoxコントロール」 - かずきのBlog@hatena
- WPF4.5入門 その34 「ListBoxコントロール」 - かずきのBlog@hatena