添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CheckBox : ToggleButton
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class CheckBox : ToggleButton
Public Class CheckBox
Inherits ToggleButton
<CheckBox .../>
<CheckBox>
  singleObject
</CheckBox>
<CheckBox>stringContent</CheckBox>
						   Object
						   IInspectable
						   DependencyObject
						   UIElement
						   FrameworkElement
						   Control
						   ContentControl
						   ButtonBase
						   ToggleButton
					 CheckBox 

WinUI 3 库应用包括大多数 WinUI 3 控件、特性和功能的交互式示例。 从 Microsoft Store 获取应用或在 GitHub 上获取源代码

以下示例显示了两个复选框控件。 第一个复选框演示选中状态和未选中状态。 第二个复选框演示已选中、未选中和不确定的状态。 可以选择控件以更改其外观,并查看它们处于何种状态。

<!-- A two-state CheckBox. -->
<CheckBox x:Name="cb1" Content="Two-state CheckBox"
          Checked="HandleCheck" Unchecked="HandleUnchecked" />
<TextBlock x:Name="text1"  />
<!-- A three-state CheckBox. -->
<CheckBox x:Name="cb2" Content="Three-state CheckBox" 
          IsThreeState="True" Indeterminate="HandleThirdState" 
          Checked="HandleCheck" Unchecked="HandleUnchecked" />
<TextBlock x:Name="text2"  />
private void HandleCheck(object sender, RoutedEventArgs e)
    CheckBox cb = sender as CheckBox;
    if (cb.Name == "cb1") text1.Text = "Two-state CheckBox checked.";
    else text2.Text = "Three-state CheckBox checked.";
private void HandleUnchecked(object sender, RoutedEventArgs e)
    CheckBox cb = sender as CheckBox;
    if (cb.Name == "cb1") text1.Text = "Two-state CheckBox unchecked.";
    else text2.Text = "Three-state CheckBox unchecked.";
private void HandleThirdState(object sender, RoutedEventArgs e)
    CheckBox cb = sender as CheckBox;
    text2.Text = "Three-state CheckBox indeterminate.";
Private Sub HandleCheck(ByVal sender As Object, ByVal e As RoutedEventArgs)
     Dim cb As CheckBox = CType(sender, CheckBox)
     If (cb.Name = "cb1") Then
         text1.Text = "Two state CheckBox checked."
         text2.Text = "Three state CheckBox checked."
     End If
 End Sub
 Private Sub HandleUnchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
     Dim cb As CheckBox = CType(sender, CheckBox)
     If (cb.Name = "cb1") Then
         text1.Text = "Two state CheckBox unchecked."
         text2.Text = "Three state CheckBox unchecked."
     End If
 End Sub
 Private Sub HandleThirdState(ByVal sender As Object, ByVal e As RoutedEventArgs)
     Dim cb As CheckBox = CType(sender, CheckBox)
     text2.Text = "Three state CheckBox indeterminate."
 End Sub
<StackPanel>
    <CheckBox x:Name="OptionsAllCheckBox" Content="Select all" IsThreeState="True" 
              Checked="SelectAll_Checked" Unchecked="SelectAll_Unchecked" Indeterminate="SelectAll_Indeterminate"/>
    <CheckBox x:Name="Option1CheckBox" Content="Option 1" Margin="24,0,0,0" 
              Checked="Option_Checked" Unchecked="Option_Unchecked"/>
    <CheckBox x:Name="Option2CheckBox" Content="Option 2" Margin="24,0,0,0" 
              Checked="Option_Checked" Unchecked="Option_Unchecked" IsChecked="True"/>
    <CheckBox x:Name="Option3CheckBox" Content="Option 3" Margin="24,0,0,0"
              Checked="Option_Checked" Unchecked="Option_Unchecked"/>
</StackPanel>
private void SelectAll_Checked(object sender, RoutedEventArgs e)
    Option1CheckBox.IsChecked = Option2CheckBox.IsChecked = Option3CheckBox.IsChecked = true;
private void SelectAll_Unchecked(object sender, RoutedEventArgs e)
    Option1CheckBox.IsChecked = Option2CheckBox.IsChecked = Option3CheckBox.IsChecked = false;
private void SelectAll_Indeterminate(object sender, RoutedEventArgs e)
    // If the SelectAll box is checked (all options are selected), 
    // clicking the box will change it to its indeterminate state.
    // Instead, we want to uncheck all the boxes,
    // so we do this programatically. The indeterminate state should
    // only be set programatically, not by the user.
    if (Option1CheckBox.IsChecked == true &&
        Option2CheckBox.IsChecked == true &&
        Option3CheckBox.IsChecked == true)
        // This will cause SelectAll_Unchecked to be executed, so
        // we don't need to uncheck the other boxes here.
        OptionsAllCheckBox.IsChecked = false;
private void SetCheckedState()
    // Controls are null the first time this is called, so we just 
    // need to perform a null check on any one of the controls.
    if (Option1CheckBox != null)
        if (Option1CheckBox.IsChecked == true &&
            Option2CheckBox.IsChecked == true &&
            Option3CheckBox.IsChecked == true)
            OptionsAllCheckBox.IsChecked = true;
        else if (Option1CheckBox.IsChecked == false &&
            Option2CheckBox.IsChecked == false &&
            Option3CheckBox.IsChecked == false)
            OptionsAllCheckBox.IsChecked = false;
            // Set third state (indeterminate) by setting IsChecked to null.
            OptionsAllCheckBox.IsChecked = null;
private void Option_Checked(object sender, RoutedEventArgs e)
    SetCheckedState();
private void Option_Unchecked(object sender, RoutedEventArgs e)
    SetCheckedState();

有关详细信息、设计指南和代码示例,请参阅 复选框

CheckBox 是用户可以选择或清除的控件。

使用 CheckBox 控件提供用户可以选择的选项列表,例如要应用于应用程序的设置列表。 CheckBox 和 RadioButton 控件都允许用户从选项列表中选择。 CheckBox 控件允许用户选择选项组合。 相比之下, RadioButton 控件允许用户从互斥选项中进行选择。

CheckBox 控件继承自 ToggleButton,可拥有三种状态:

State

要使 CheckBox 报告不确定状态,必须将 IsThreeState 属性设置为 true

控件样式和模板

可以修改默认 的 StyleControlTemplate ,为控件提供唯一的外观。 有关修改控件样式和模板的信息,请参阅 XAML 样式。 XAML 还包括可用于在不修改控件模板的情况下修改处于不同视觉状态的控件颜色的资源。 修改这些资源优先于设置 背景前台等属性。 有关详细信息,请参阅 XAML 样式一文的轻量级样式部分。

GitHub 上 CheckBox_themeresources.xaml 文件的 ThemeDictionaries 部分中列出了此控件的资源。 ResourceKey每个 的值引用 StaticResourceCommon_themeresources_any.xaml 文件中的画笔和颜色。

获取与此 对象关联的 CoreDispatcherCoreDispatcher 表示可以访问 UI 线程上的 DependencyObject 的工具,即使代码是由非 UI 线程启动的。

(继承自 DependencyObject)

获取 DispatcherQueue 与此 对象关联的 。 DispatcherQueue表示可以访问 DependencyObject UI 线程上的 的功能,即使代码是由非 UI 线程启动的。

(继承自 DependencyObject)

获取或设置文本和其他 UI 元素在控制其布局的任何父元素中的流动方向。 此属性可以设置为 LeftToRightRightToLeft。 在任何元素上将 设置为 FlowDirectionRightToLeft 会将对齐方式设置为从右到左,将读取顺序设置为从右到左,并将控件的布局从右向左排列。

(继承自 FrameworkElement)

获取本地定义的资源字典。 在 XAML 中,可以通过 XAML 隐式集合语法将资源项建立为 property 元素的 frameworkElement.Resources 子对象元素。

(继承自 FrameworkElement)

对于Windows 10 创意者更新 (内部版本 10.0.15063) 及更新版本,TabFocusNavigation 属性可用于在 UIElement 基类上包括不使用 ControlTemplate 的选项卡序列中的对象。

(继承自 Control)

为指定的路由事件添加路由事件处理程序,并将该处理程序添加到当前元素的处理程序集合中。 指定 handledEventsTootrue 以调用提供的处理程序,即使在其他位置处理事件也是如此。

(继承自 UIElement)

汇报 UIElementDesiredSize。 通常,为其布局子级实现自定义布局的对象从其自己的 MeasureOverride 实现中调用此方法,以形成递归布局更新。

(继承自 UIElement)

每当应用程序代码或内部进程 ((例如重新生成布局传递) 调用 ApplyTemplate)时调用。 简单来说,这意味着在 UI 元素在应用中显示之前调用 方法。 重写此方法以影响类的默认后模板逻辑。

(继承自 FrameworkElement)

在应用中处理 键盘快捷方式 (或快捷键) 之前调用。 每当应用程序代码或内部进程调用 ProcessKeyboardAccelerators 时调用。 重写此方法以影响默认加速器处理。

(继承自 UIElement)

在释放之前启动 Press 操作的指针设备时发生,而此元素中。 请注意, 不保证“按下 ”操作的结束会触发 PointerReleased 事件;其他事件可能会触发。 有关详细信息,请参阅备注。

(继承自 UIElement)