かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

WPF4.5入門 その32 「CheckBoxコントロール」

CheckBoxコントロールは、オン・オフ・その他の状態を表すコントロールです。一般的に以下のような見た目をしています。

f:id:okazuki:20140812225842p:plain

上記の画面のXAMLを以下に示します。

<StackPanel>
    <CheckBox Content="オン" IsChecked="True"/>
    <CheckBox Content="オフ" IsChecked="False"/>
    <CheckBox Content="その他" IsChecked="{x:Null}" IsThreeState="True"/>
</StackPanel>

CheckBoxコントロールの代表的なプロパティを以下に示します。

プロパティ 説明
public Nullable IsChecked { get; set; } オンの時にtrue、オフの時にfalse、その他の時にnullが設定されています。
public bool IsThreeState { get; set; } CheckBoxがオン・オフの2つの状態ではなく、オン・オフ・その他の3つの状態を持つかどうかを表します。trueのときに、その他の状態を持つようになります。デフォルト値はfalseです。

また、CheckBoxコントロールは、選択状態が変わったことを検知するための以下のイベントも備えています。

イベント 説明
Checked IsCheckedプロパティがtrueになったときに呼び出されます。
Unchecked IsCheckedプロパティがfalseになったときに呼び出されます。
Indeterminate IsCheckedプロパティがnullになったときに呼び出されます。

これらのイベントを使うことで、選択状態に応じた処理を行うことが出来ます。 CheckBoxのチェック状態に応じてTextBlockの表示を切り替えるプログラムは以下のようになります。

<StackPanel>
    <CheckBox 
        IsThreeState="True" 
        Content="CheckBox" 
        Checked="CheckBox_Checked"
        Unchecked="CheckBox_Unchecked"
        Indeterminate="CheckBox_Indeterminate"/>
    <TextBlock x:Name="textBlock" Text="オフ"/>
</StackPanel>
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
    this.textBlock.Text = "オン";
}

private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
    this.textBlock.Text = "オフ";
}

private void CheckBox_Indeterminate(object sender, RoutedEventArgs e)
{
    this.textBlock.Text = "その他";
}

実行すると以下のような結果になります。

f:id:okazuki:20140812230229p:plain

過去記事