WPF CheckBox控件 我全都要
CheckBox控件允许选择一个或多个选项。
CheckBox控件具有一些基本的属性,这些属性可以帮助你自定义控件的显示和行为。
Content: 指定显示在CheckBox中的文本。
IsChecked: 指示CheckBox是否被选中的属性。
Width 和 Height: 设置CheckBox的宽度和高度。
Margin 和 Padding: 设置CheckBox边缘和内部的空白距离。
Foreground 和 Background: 设置文本和背景的颜色。
按F5运行,点一点,可以看到选择几个都可以。
修改完善一下XAML,添加个button
修改完善一下CS代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
string? yourselected="";
if (CheckBox1.IsChecked == true)
yourselected=CheckBox1.Content.ToString();
if (CheckBox2.IsChecked == true)
yourselected += CheckBox2.Content.ToString();
if (CheckBox3.IsChecked == true)
yourselected += CheckBox3.Content.ToString();
MessageBox.Show(yourselected);
}
按F5运行一下。
________________________________________
做个例子吧。
CheckBox 通常对应一个布尔值,这意味着它只有两种状态:真或假(开或关)。然而,由于布尔数据类型可能为空,有效地允许第三个选项(真、假或空),CheckBox 控件也可以支持这种情况。通过将 IsThreeState 属性设置为 true,CheckBox 将获得称为“不确定状态”的第三种状态。
一个常见的用法是有一个“全部启用”复选框,它可以控制一组子复选框,以及显示它们的集体状态。我们的示例展示了如何创建可以打开和关闭的功能列表,顶部有一个常见的“全部启用”复选框。
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:WpfApp7" mc:Ignorable="d" Title="MainWindow" Height="200" Width="300"> Content="勾选全部选项" x:Name="AllCheck" Checked="AllCheckeChange" Unchecked="AllCheckeChange" /> Content="强制保存文件" Margin="5" Checked="CheckeChange" Unchecked="CheckeChange" /> Content="文件保存时自动保存副本" Margin="5" Checked="CheckeChange" Unchecked="CheckeChange" /> Content="自动添加文件扩展名" Margin="5" Checked="CheckeChange" Unchecked="CheckeChange" IsChecked="True" />
上面的XAML多了基层嵌套。
CS源文件代码。
using System.Windows;
namespace WpfApp7
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void AllCheckeChange(object sender, RoutedEventArgs e)
{
bool allCheckedState = (AllCheck.IsChecked == true);
checkbox1.IsChecked = allCheckedState;
checkbox2.IsChecked = allCheckedState;
checkbox3.IsChecked = allCheckedState;
}
private void CheckeChange(object sender, RoutedEventArgs e)
{
AllCheck.IsChecked = null;
if ((checkbox1.IsChecked == true) && (checkbox2.IsChecked == true) && (checkbox3.IsChecked == true))
{
AllCheck.IsChecked = true;
}
if ((checkbox1.IsChecked == false) && (checkbox2.IsChecked == false) && (checkbox3.IsChecked == false))
{
AllCheck.IsChecked = false;
}
}
}
}
运行结果。
此示例从两个不同的角度工作:如果选中或取消选中“全部启用”复选框,则所有子复选框(在我们的示例中每个都代表一个应用程序功能)将被选中或取消选中。不过,它也可以反过来工作,其中选中或取消选中子 CheckBox 会影响“启用所有”复选框状态:如果它们都被选中或未选中,则“启用所有”复选框将获得相同的状态 - 否则该值将是留下空值,这会强制 CheckBox 进入不确定状态。
所有这些行为都是通过订阅 CheckBox 控件的 Checked 和 Unchecked 事件来实现的。在实际示例中,您可能会改为绑定值,但此示例显示了使用 IsThreeState 属性创建“全部切换”效果的基础知识。