# CheckBox 使用文档
本文档介绍 AtomUI CheckBox 控件的各种使用方式,示例代码摘自 Gallery 演示程序。
> 📖 Gallery 源码位置:`controlgallery/AtomUIGallery/ShowCases/Views/DataEntry/CheckBoxShowCase.axaml`
---
## 前置准备
在 AXAML 中使用 CheckBox,需要引入以下命名空间:
```xml
xmlns:atom="https://atomui.net"
```
在 C# 代码中引入:
```csharp
using AtomUI.Desktop.Controls; // CheckBox, CheckBoxGroup
using AtomUI.Controls; // CheckBoxOption, ICheckBoxOption
```
---
## 1. 基本用法
最简单的复选框,通过 `Content` 设置标签文本:
```xml
Checkbox
```
---
## 2. 禁用状态
通过 `IsEnabled="False"` 禁用复选框,三种状态均支持禁用:
```xml
UnChecked
Indeterminate
Checked
```
---
## 3. 受控复选框
通过数据绑定控制复选框状态:
```xml
```
---
## 4. 复选框组
### 声明式用法
直接在 `CheckBoxGroup` 中添加 `CheckBox` 子项:
```xml
Apple
Pear
Orange
Apple
Pear
Orange
Apple
Pear
Orange
```
### 数据驱动用法
通过 `ItemsSource` 绑定 `ICheckBoxOption` 集合:
```csharp
// ViewModel 或 Code-behind
var options = new List
{
new() { Content = "Apple", IsChecked = true },
new() { Content = "Pear" },
new() { Content = "Orange" }
};
BasicCheckBoxGroup.ItemsSource = options;
```
---
## 5. 全选/部分选联动
通过 Indeterminate 不确定态实现全选联动效果:
```xml
Check all
Apple
Pear
Orange
```
**实现逻辑**:
- 全选框的 `IsChecked` 绑定到 ViewModel 的计算属性
- 当所有子项选中时,全选框为 `true`
- 当部分子项选中时,全选框为 `null`(不确定态,显示横杠)
- 当没有子项选中时,全选框为 `false`
- 点击全选框时,全部子项同步切换
---
## 6. Grid 布局中使用
利用 Grid 实现复杂的复选框布局:
```xml
A
B
C
D
E
```
---
## 7. MVVM 命令绑定
CheckBox 继承自 Button,完整支持 `Command` 绑定:
```xml
Subscribe to newsletter
```
---
## 8. 控制动画行为
```xml
No Wave
```
---
## 常见组合模式
### 设置选项列表
```xml
Email notifications
Push notifications
SMS notifications
```
### 表单中使用
```xml
Music
Sports
Reading
Travel
```
### 协议确认
```xml
I have read and agree to the
Terms of Service
Submit
```