# HyperLinkButton 使用文档 本文档介绍 AtomUI HyperLinkButton 控件的各种使用方式。 > 📖 Gallery 中使用了 HyperLinkButton 的页面: > - `controlgallery/AtomUIGallery/ShowCases/Views/General/AboutUsPage.axaml`(带图标的导航链接) > - `controlgallery/AtomUIGallery/ShowCases/Views/DataDisplay/CardShowCase.axaml`(Card 中的 "More" 链接) > - `controlgallery/AtomUIGallery/ShowCases/Views/DataEntry/FormShowCase.axaml`(表单中的 "Forgot password" 链接) --- ## 前置准备 在 AXAML 中使用 HyperLinkButton,需要引入以下命名空间: ```xml xmlns:atom="https://atomui.net" xmlns:antdicons="https://atomui.net/icons/antdesign" ``` 在 C# 代码中引入: ```csharp using AtomUI.Desktop.Controls; // HyperLinkButton 控件 using AtomUI.Controls; // SizeType 等共享类型 ``` --- ## 1. 基本用法 最基本的超链接按钮,点击后在浏览器中打开链接: ```xml Visit AtomUI ``` **要点**: - 设置 `NavigateUri` 后,点击会自动调用系统浏览器打开链接 - 导航成功后,`IsVisited` 自动变为 `true` - 支持任意 URI 格式(`https://`、`mailto:`、`file://` 等) --- ## 2. 尺寸 通过 `SizeType` 控制尺寸,支持 `Large`、`Middle`(默认)、`Small` 三种: ```xml Large Link Middle Link Small Link ``` --- ## 3. 带图标 通过 `Icon` 属性在链接文本前显示图标: ```xml Open Link ``` **Gallery 实际示例**(来自 `AboutUsPage.axaml`): ```xml Home Page Gitee Github ``` --- ## 4. 危险样式 通过 `IsDanger="True"` 使用红色链接样式,适用于删除、移除等破坏性操作: ```xml Delete Account Remove Data ``` --- ## 5. 加载状态 通过 `IsLoading` 属性显示旋转加载图标,适合异步操作等待场景: ```xml Loading... ``` ```xml Fetch Data ``` ```csharp // Code-behind public void HandleLinkClick(object? sender, RoutedEventArgs args) { if (sender is HyperLinkButton link) { link.IsLoading = true; Dispatcher.UIThread.InvokeAsync(async () => { await Task.Delay(TimeSpan.FromSeconds(2)); // 模拟异步操作 link.IsLoading = false; }); } } ``` --- ## 6. 作为普通按钮使用(不导航) 不设置 `NavigateUri` 时,HyperLinkButton 就是一个链接样式的普通按钮,适合内联操作: ```xml Click Me View Details ``` **Gallery 实际示例**(来自 `CardShowCase.axaml`): ```xml More ``` --- ## 7. 已访问状态 `IsVisited` 属性在导航成功后自动设置,也可手动控制: ```xml Already Visited Tracked Link ``` 可以通过 `:visited` 伪类为已访问链接设置不同样式: ```xml ``` --- ## 8. C# 代码操作 ### 动态创建 ```csharp using AtomUI.Desktop.Controls; using AtomUI.Controls; var link = new HyperLinkButton { Content = "Visit Documentation", NavigateUri = new Uri("https://docs.example.com"), SizeType = SizeType.Small }; parentPanel.Children.Add(link); ``` ### 监听导航状态 ```csharp var link = new HyperLinkButton { NavigateUri = new Uri("https://example.com"), Content = "Open Link" }; link.PropertyChanged += (sender, e) => { if (e.Property == HyperLinkButton.IsVisitedProperty && link.IsVisited) { Console.WriteLine("链接已被访问"); } }; ``` --- ## 常见组合模式 ### 操作链接列表 ```xml Edit Delete Help ``` ### 表单中的辅助链接 **Gallery 实际示例**(来自 `FormShowCase.axaml`): ```xml Forgot password ``` ### 页面底部导航 ```xml About | Privacy | Terms ``` ### 关于页面 **Gallery 实际示例**(来自 `AboutUsPage.axaml`): ```xml Home Page Gitee Github ``` ### 禁用链接 ```xml Unavailable Link ```