かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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

過去記事