最近需要使用该控件做一个选择,顺便温习一下该控件的基本使用方法。
示例1:
<StackPanel Margin="10">
<Label FontWeight="Bold">请选择:</Label>
<CheckBox>Python</CheckBox>
<CheckBox IsChecked="True">Advance C#</CheckBox>
<CheckBox>Prime C++</CheckBox>
</StackPanel>
IsChecked属性为True时,被选中。
示例2:
CheckBox 继承自内容控件,意味可以使用自定义显示的内容。
<StackPanel Grid.Column="1" Margin="10">
<Label FontWeight="Bold">请选择:</Label>
<CheckBox>
<TextBlock>
<Run Foreground="Green" FontWeight="Bold">Python</Run>
Crash Course
</TextBlock>
</CheckBox>
<CheckBox IsChecked="True">
<WrapPanel>
<TextBlock>
Help for Programmers <Run FontWeight="Bold"> C# 8.0 Pocket Reference</Run>
</TextBlock>
<Image Source="Images/question.png" Width="16" Height="16" Margin="5,0" />
</WrapPanel>
</CheckBox>
<CheckBox>
<TextBlock>
Beginning Through
<Run Foreground="Blue" TextDecorations="Underline" FontWeight="Bold">C++ </Run>
Game Programming
</TextBlock>
</CheckBox>
</StackPanel>
在三个复选框上,我对文本做了不同的处理,在中间的一个加入了一个 Image 控件。通过将控件指定为内容,而不仅仅是文本,我们可以更好地控制外观,无论您单击内容的哪个部分,它都会激活 CheckBox 并打开或关闭它.
示例3:
IsThreeState 属性。CheckBox 通常对应一个布尔值,这意味着它只有两种状态:真或假(开或关)。但是,由于布尔数据类型可能为空,有效地允许第三个选项(真、假或空),CheckBox 控件也可以支持这种情况。通过将 IsThreeState 属性设置为 true,CheckBox 将获得称为“不确定状态”的第三种状态。
<StackPanel Margin="10" Grid.Row="1" Grid.Column="0">
<Label FontWeight="Bold">请选择:</Label>
<StackPanel Margin="10,5">
<CheckBox IsThreeState="True" Name="cbAllFeatures" Checked="cbAllFeatures_Checked" Unchecked="cbAllFeatures_Unchecked">Enable all</CheckBox>
<StackPanel Margin="20,5">
<CheckBox Name="cbFeatureAbc" Checked="cbFeature_CheckedChanged" Unchecked="cbFeature_CheckedChanged">Python</CheckBox>
<CheckBox Name="cbFeatureXyz" IsChecked="True" Checked="cbFeature_CheckedChanged" Unchecked="cbFeature_CheckedChanged">Advance C#</CheckBox>
<CheckBox Name="cbFeatureWww" Checked="cbFeature_CheckedChanged" Unchecked="cbFeature_CheckedChanged">Prime C++</CheckBox>
</StackPanel>
</StackPanel>
</StackPanel>
private void cbFeature_CheckedChanged(object sender, RoutedEventArgs e)
{
cbAllFeatures.IsChecked = null;
if ((cbFeatureAbc.IsChecked == true) && (cbFeatureXyz.IsChecked == true) && (cbFeatureWww.IsChecked == true))
cbAllFeatures.IsChecked = true;
if ((cbFeatureAbc.IsChecked == false) && (cbFeatureXyz.IsChecked == false) && (cbFeatureWww.IsChecked == false))
cbAllFeatures.IsChecked = false;
}
private void cbAllFeatures_Checked(object sender, RoutedEventArgs e)
{
bool newVal = (cbAllFeatures.IsChecked == true);
cbFeatureAbc.IsChecked = newVal;
cbFeatureXyz.IsChecked = newVal;
cbFeatureWww.IsChecked = newVal;
}
示例4:
动态添加CheckBox
<StackPanel Grid.Row="1" Grid.Column="1" Margin="5" x:Name="sp4">
<CheckBox Name="McCheckBox1" Content="Check Me"
IsChecked="True" IsThreeState="True" >
</CheckBox>
<CheckBox Name="McCheckBox"
Content="Check Me"
IsChecked="True" IsThreeState="True"
Checked="McCheckBox_Checked" Unchecked="McCheckBox_Unchecked">
</CheckBox>
<Button x:Name="btnDynamicAdd" Click="btnDynamicAdd_Click" Margin="5">Dynamic Add</Button>
</StackPanel>
后台代码
private void McCheckBox_Checked(object sender, RoutedEventArgs e)
{
McCheckBox.Content = "Checked";
}
private void McCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
McCheckBox.Content = "Unchecked";
}
private void CreateDynamicCheckBox()
{
CheckBox chb = new CheckBox();
chb.Content = "Click me";
chb.IsChecked = true;
chb.Foreground = new SolidColorBrush(Colors.Orange);
chb.IsChecked = true;
sp4.Children.Add(chb);
}
private void btnDynamicAdd\_Click(object sender, RoutedEventArgs e)
{
CreateDynamicCheckBox();
}