# RadioButton 使用文档 本文档介绍 AtomUI RadioButton 控件的各种使用方式,示例代码摘自 Gallery 演示程序。 > 📖 Gallery 源码位置:`controlgallery/AtomUIGallery/ShowCases/Views/DataEntry/RadioButtonShowCase.axaml` --- ## 前置准备 在 AXAML 中使用 RadioButton,需要引入以下命名空间: ```xml xmlns:atom="https://atomui.net" xmlns:antdicons="https://atomui.net/icons/antdesign" ``` 在 C# 代码中引入: ```csharp using AtomUI.Desktop.Controls; // RadioButton, RadioButtonGroup using AtomUI.Controls; // RadioButtonOption, IRadioButtonOption ``` --- ## 1. 基本用法 最简单的单选框使用方式: ```xml Radio ``` 两个单选框互斥(默认选中一个): ```xml Option A Option B ``` --- ## 2. 禁用状态 通过 `IsEnabled="False"` 禁用单选框: ```xml Radio1 Radio2 toggle disabled ``` ```csharp public void ToggleDisabledStatus(object? sender, RoutedEventArgs args) { ToggleDisabledRadioUnChecked.IsEnabled = !ToggleDisabledRadioUnChecked.IsEnabled; ToggleDisabledRadioChecked.IsEnabled = !ToggleDisabledRadioChecked.IsEnabled; } ``` 禁用时的视觉变化: - 文本变为 `ColorTextDisabled`(灰色) - 指示器背景变为 `ColorBgContainerDisabled`(灰色背景) - 如果选中,圆点变为 `DotColorDisabled`(灰色圆点) - 不可点击,鼠标样式不会变为手型 > 📖 参考:Gallery 中 "Disabled" 示例。 --- ## 3. 单选框组(RadioButtonGroup) ### 声明式用法 直接在 AXAML 中声明 RadioButton 子元素: ```xml Option A Option B Option C ``` ### 垂直排列 ```xml Option A Option B Option C Option D ``` ### 自定义内容(图标 + 文字) RadioButton 的 `Content` 属性接受任意控件,可以用来创建带图标的选项: ```xml LineChart DotChart BarChart PieChart ``` > 📖 参考:Gallery 中 "Radio Group" 示例。 ### 数据驱动用法 通过 `ItemsSource` 绑定 `IRadioButtonOption` 集合,动态生成子项: ```xml ``` ```csharp // Code-behind 或 ViewModel var options = new List { new() { Content = "Option A" }, new() { Content = "Option B", IsChecked = true }, new() { Content = "Option C" }, new() { Content = "Option D", IsEnabled = false }, }; RadioButtonGroup.ItemsSource = options; ``` 使用 ReactiveUI 数据绑定模式: ```csharp this.OneWayBind(ViewModel, vm => vm.RadioOptions, v => v.RadioButtonGroup.ItemsSource) .DisposeWith(disposables); ``` > 📖 参考:Gallery 中 "Radio Group by Items source" 示例 及 `RadioButtonShowCase.axaml.cs`。 ### 监听选中变化 ```csharp // 声明式用法 — CheckedItem 返回 RadioButton 实例 RadioButtonGroup.CheckedChanged += (sender, args) => { if (args.NewCheckedItem is RadioButton radioButton) { Console.WriteLine($"Selected: {radioButton.Content}"); } }; // 数据驱动用法 — CheckedItem 返回数据对象 RadioButtonGroup.CheckedChanged += (sender, args) => { if (args.NewCheckedItem is RadioButtonOption option) { Console.WriteLine($"Selected: {option.Content}"); } }; ``` --- ## 4. 按钮样式单选框(OptionButtonGroup) Ant Design 的 `Radio.Button` 在 AtomUI 中通过 `OptionButtonGroup` + `OptionButton` 实现: ### Outline 样式(默认) ```xml Apple Pear Orange ``` ### Solid 填充样式 ```xml Apple Pear Orange ``` ### 带图标的按钮样式 ```xml macOS Linux Windows ``` ### 三种尺寸 ```xml Hangzhou Shanghai Beijing Chengdu Hangzhou Shanghai Beijing Chengdu Hangzhou Shanghai Beijing Chengdu ``` ### 禁用状态 ```xml Hangzhou Shanghai Beijing macOS Linux Windows ``` > 📖 参考:Gallery 中 "Option Button"、"Option Button with icon"、"option style"、"Solid option button"、"Size type" 示例。 --- ## 5. 控制动画行为 ```xml No Wave No Animation A B ``` --- ## 常见组合模式 ### 表单中使用 ```xml 男 女 其他 ``` ### 切换视图模式 使用按钮样式单选框在几种模式间切换: ```xml ``` ### MVVM 数据绑定 ```xml Option A Option B Option C ``` ### 混合禁用项 ```xml Apple Pear Orange ``` > 📖 参考:Gallery 中 "Option Button" 示例中的第二个 StackPanel。