Ant Design Blazor Segmented 分段控制器禁用(Disabled)完全指南
前端UI组件设计系统【免费下载链接】ant-design-blazor基于 Ant Design 与 Blazor 的前端组件库。让开发者解放生产力实现更大价值。项目地址https://gitcode.com/ant-design-blazor/ant-design-blazor点击查看免费下载导读本文围绕 ant-design-blazor 组件库中 Segmented分段控制器的“不可用Disabled”用法展开系统讲解整体禁用、单项禁用与动态切换禁用三种实战场景并结合仓库源码剖析禁用状态的实现原理与底层样式机制。读完本文你将掌握如何在 Blazor 项目中通过Disabled参数精确控制 Segmented 的可用状态并理解其背后的组件联动与交互阻断逻辑。一、禁用场景一览从官方 demo 出发本指南对应仓库中的官方演示文档 disabled.md 及其配套示例 Disabled.razor。原文档的定位是“Segmented 不可用 / Disabled Segmented”即展示分段控制器在禁用状态下的完整行为。该 demo 一共演示了四种禁用形态覆盖了 Segmented 所有声明式配置入口Segmented TValuestring Labels(new []{Map, Transit, Satellite}) Disabled / br / Segmented TValuestring Optionsoptions / br / Segmented bind-Value_value Disabled SegmentedItem Valuetrue LabelTrue / SegmentedItem Valuefalse LabelFalse / /Segmented br / Segmented bind-Value_value Disabled_disabled SegmentedItem Valuetrue LabelTrue / SegmentedItem Valuefalse LabelFalse / /Segmented br / Switch bind-Checked_disabled CheckedChildrenDisabled UnCheckedChildrenEnable/ code { bool _disabled; bool _value; SegmentedOptionstring[] options { new(Daily), new(Weekly, Weekly, true), new(Monthly), new(Quarterly, Quarterly, true ), new(Yearly), }; }场景一Labels模式整体禁用Segmented TValuestring Labels(...) Disabled /只用一个布尔属性Disabled即可让整个分段控制器全部选项不可用。这是最直观的整体禁用写法适合表单提交前后、权限受限、数据未就绪等场景。场景二Options模式单项禁用Options接受SegmentedOptionTValue数组。每个选项通过构造函数new(Weekly, Weekly, true)指定三个字段Value值、Label显示文案、Disabled是否禁用。在上述示例中Weekly与Quarterly被标记为禁用而Daily、Monthly、Yearly保持可选实现了同一分段控制器内部分选项禁用、部分可用的混合状态。SegmentedOptionTValue在仓库中的定义非常精简见 SegmentedOption.cspublic record struct SegmentedOptionTValue(TValue Value, string Label null, bool Disabled false) { public string Label { get; set; } Label ?? Value.ToString(); }可见Label为可选参数缺省时直接取Value的字符串表示Disabled默认值为false。场景三ChildContent模式下整体禁用当使用SegmentedItem声明子项时同样可以在父级Segmented上直接设置Disabled一次性禁用所有子分段项Segmented bind-Value_value Disabled SegmentedItem Valuetrue LabelTrue / SegmentedItem Valuefalse LabelFalse / /Segmented场景四动态切换禁用状态demo 的最后一段把Disabled绑定到可变的_disabled字段并通过Switch组件控制Segmented bind-Value_disabled ... * 示意Disabled 绑定变量 * Switch bind-Checked_disabled CheckedChildrenDisabled UnCheckedChildrenEnable/当开关拨动时Segmented 会在禁用与可用状态间实时切换无需重建组件。这为“编辑态 / 只读态”切换、权限动态变更等交互提供了开箱即用的支持。二、API 参数Disabled的声明方式根据组件官方 API 文档 index.zh-CN.mdSegmented 的核心参数如下自v0.12.0版本提供该组件参数说明类型默认值Block将宽度调整为父元素宽度booleanfalseDefaultValue默认选中的值TValue-Disabled是否禁用booleanfalseLabels使用字符串同时作为 Label 和 Valuestring[]-OnChange选项变化时的回调函数EventCallbackTValue-Options数据化配置选项内容TValue[][]Size控件尺寸large|middle|small-Value当前选中的值TValue-其中Disabled存在两级作用域组件级整体禁用设置在SegmentedTValue上作用于全部选项项级单项禁用设置在SegmentedItemTValue的Disabled参数上或通过SegmentedOptionTValue构造函数的第三个参数指定。三、源码剖析禁用状态的实现原理1. 组件级禁用状态变更的级联传播在 Segmented.razor.cs 中Disabled参数并非简单赋值[Parameter] public bool Disabled { get _disabled; set { if (_disabled value) return; _disabled value; _items.ForEach(item item.MarkStateHasChanged()); } }当Disabled值发生变化时组件会遍历内部维护的_items即所有SegmentedItem并逐个调用MarkStateHasChanged()触发重渲染确保禁用样式与交互状态实时同步。这种“父参数变更 → 子项级联刷新”的设计正是场景四动态切换能即时生效的原因。同时在OnInitialized中通过ClassMapper挂载根样式类Segmented.razor.csClassMapper.Add(PrefixCls) .If(${PrefixCls}-lg, () Size SegmentedSize.Large) .If(${PrefixCls}-sm, () Size SegmentedSize.Small) .If(${PrefixCls}-disabled, () Disabled) .If(${PrefixCls}-block, () Block) .If(${PrefixCls}-rtl, () RTL);整体禁用时根元素会获得ant-segmented-disabled类用于承载容器级的禁用视觉反馈。2. 项级禁用Disabled的 OR 合并逻辑在 SegmentedItem.razor.cs 中单项的禁用状态由自身与父级共同决定protected override void OnInitialized() { base.OnInitialized(); ClassMapper.Add(PrefixCls) .If(${PrefixCls}-selected, () _selected) .If(${PrefixCls}-disabled, () Disabled || Parent?.Disabled true); Parent?.AddItem(this); }ant-segmented-item-disabled类在自身 Disabled 或父级 Segmented.Disabled 任一为真时被加上因此只要有一方禁用该项即进入禁用态。交互阻断逻辑同样遵循该 OR 规则SegmentedItem.razor.csprivate void OnClick() { if (Disabled || Parent.Disabled) { return; } Parent.Select(this); }点击事件处理器在禁用条件下直接return不会触发Parent.Select(this)因此既不会更新选中值也不会产生选中滑块thumb动画。3. 三种声明入口的渲染汇聚组件模板 Segmented.razor 按优先级渲染内容ChildContentOptionsLabels并依据不同入口合并禁用状态走ChildContentSegmentedItem时禁用状态由SegmentedItem.Disabled自身承担走Options时模板写成Disabled(option.Disabled || Disabled)将选项级与组件级禁用合并后传给SegmentedItem走Labels时模板直接传递DisabledDisabled即所有由 Label 生成的项共享组件级禁用状态。SegmentedItem最终渲染为label classant-segmented-item ...包裹的隐藏 radio 输入见 SegmentedItem.razor禁用态下该 label 失去可点击性。四、样式层禁用态的视觉呈现禁用样式定义在 index.less 与 mixins.less 中// index.less -item-disabled { .segmented-disabled-item(); } // mixins.less .segmented-disabled-item { , :hover, :focus { color: disabled-color; cursor: not-allowed; } }ant-segmented-item-disabled项在普通、悬浮、聚焦三种状态下均使用disabled-color禁用色显示文字并将光标改为not-allowed从视觉上明确告知用户不可交互。此外容器级禁用时index.less 中的 hover 背景反馈也会被取消:not(-disabled) { :hover, :focus { background-color: segmented-hover-bg; } }即整体禁用ant-segmented-disabled时整个控制器不再响应 hover 背景变化进一步强化禁用语义。五、测试佐证渲染行为的可验证性仓库在 SegmentedTests.razor 中提供了组件渲染测试可验证选中项结构与 radio 输入渲染var cut Context.Render(Segmented Labels(new[]{Daily, Weekly}) /); cut.MarkupMatches( div class ant-segmented id:ignore div classant-segmented-group label class ant-segmented-item ant-segmented-item-selected id:ignore input classant-segmented-item-input typeradio checked ...结合前文源码可以看出每个分段项对应一个ant-segmented-item标签与一个隐藏 radio 输入选中项额外获得ant-segmented-item-selected类。禁用项在此基础上会追加ant-segmented-item-disabled类并受OnClick逻辑保护这正是编写组件级测试时可用于断言的关键标记。六、实践要点与注意事项两种粒度按需选择若整个控制器都不允许操作优先在Segmented上设置Disabled若仅部分选项不可用则通过Options中SegmentedOption的Disabled或SegmentedItem的Disabled逐项声明。禁用不影响已选值Disabled只阻断新的点击交互不会清空当前的Value已选中项在禁用态下仍保持高亮ant-segmented-item-selected。动态切换成本极低由于父级Disabled的 setter 会级联触发所有子项MarkStateHasChanged()配合Switch等控件进行只读/编辑态切换时无需手动重建选项。权限与表单场景结合可将Disabled绑定到权限判断、表单校验结果或异步加载状态实现数据未就绪前的占位锁定。视觉与语义一致性禁用态的最终观感由disabled-color主题变量控制如需全局调整可在 variable.less 中定制该变量而无需改动组件代码。本文所涉代码与文档均可在仓库对应路径直接查看demo 元数据、demo 实现、组件实现、样式定义 与 API 文档。赞分享前端UI组件设计系统【免费下载链接】ant-design-blazor基于 Ant Design 与 Blazor 的前端组件库。让开发者解放生产力实现更大价值。项目地址https://gitcode.com/ant-design-blazor/ant-design-blazor点击查看免费下载相关推荐Ant Design Blazor Segmented 组件自定义渲染用 ChildContent 打造富内容分段控制器Ant Design Blazor Segmented 组件自定义渲染用 ChildContent 打造富内容分段控制器 本指南以 Ant Design BlUI组件前端ant-design-vue Segmented 分段控制器完全指南API、源码原理与实战示例ant design vue Segmented 分段控制器完全指南API、源码原理与实战示例 导读 Segmented 是 ant design vue 中前端UI组件设计系统Ant Design Cascader 选项禁用指南通过 disabled 字段精确控制级联选择Ant Design Cascader 选项禁用指南通过 disabled 字段精确控制级联选择 导读 本文围绕 Ant Design 级联选择组件Casc前端UI组件设计系统上一篇Chat LangChain 完整教程三步搭建一个 LangChain 文档问答助手下一篇WPF UI NavigationView 完整上手指南10 分钟搭好应用导航创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

llama-swap 模型 TTL 自动卸载完全指南:globalTTL、unloadTimeout 与 cmdStop 实战

llama-swap 模型 TTL 自动卸载完全指南:globalTTL、unloadTimeout 与 cmdStop 实战

后端API网关LLM 网关人工智能大模型本地部署 【免费下载链接】llama-swap Reliable model swapping for any local OpenAI/Anthropic compatible server - llama.cpp, vllm, etc 项目地址: https://gitcode.com/gh_mirrors/ll/llama-swap 点击查看 免费下载 llama-…

2026/10/12 1:41:55 阅读更多 →
Search-R1 检索服务部署实战指南:从 BM25 稀疏检索到 e5 稠密向量与在线搜索引擎的启动与配置

Search-R1 检索服务部署实战指南:从 BM25 稀疏检索到 e5 稠密向量与在线搜索引擎的启动与配置

人工智能大模型强化学习RLHFRAG工具调用 【免费下载链接】Search-R1 Search-R1: An Efficient, Scalable RL Training Framework for Reasoning & Search Engine Calling interleaved LLM based on veRL 项目地址: https://gitcode.com/gh_mirrors/se/Search-R1…

2026/10/12 1:41:55 阅读更多 →
Orange 回归建模实战:Learner、Regressor 与交叉验证评估全解析

Orange 回归建模实战:Learner、Regressor 与交叉验证评估全解析

人工智能机器学习数据分析数据可视化 【免费下载链接】orange3 🍊 :bar_chart: :bulb: Orange: Interactive data analysis 项目地址: https://gitcode.com/gh_mirrors/or/orange3 点击查看 免费下载 本指南以 Orange 数据挖掘库(orange3&am…

2026/10/12 1:40:55 阅读更多 →

最新新闻

【深度学习新浪潮】Meta Muse 智能体:它是什么?有哪些特点?为什么突然火了?

【深度学习新浪潮】Meta Muse 智能体:它是什么?有哪些特点?为什么突然火了?

1. 引言 近期,Meta Muse 智能体在 AI 领域引发广泛关注,开发者、创作者与科技从业者纷纷展开讨论。许多初次接触者不禁疑惑:这是 Meta 推出的又一款大模型?抑或仅是蹭热度的 AI 玩具? 事实并非如此。Meta Muse 是 Meta 在 AI 智能体方向的一次战略性布局,它并非简单的对…

2026/10/12 2:24:22 阅读更多 →
Spring-boot-3 -注解 yaml配置 -日志

Spring-boot-3 -注解 yaml配置 -日志

4、核心技能1. 常用注解SpringBoot 摒弃 XML 配置方式,改为全注解驱动1. 组件注册Configuration 自定义配置类、SpringBootConfiguration 用来标注SpringBoot主启动类的Bean 可以在自定义配置类面创建对象交给ioc容器,组件在容器中的名字为方法名、Scope…

2026/10/12 2:24:22 阅读更多 →
Neuroimage: 动态功能连接方法的重测信度比较

Neuroimage: 动态功能连接方法的重测信度比较

本篇文献发表在Neuroimage杂志。所发布内容旨在与大家分享学术新知,促进交流学习版权归原作者或原出处所有,感谢各位学者的辛勤付出与研究成果。1.引言大脑的功能组织具有丰富的时空结构,可以使用功能连接指标进行探测。功能连接被定义为两个…

2026/10/12 2:24:22 阅读更多 →
page_alloc __rmqueue

page_alloc __rmqueue

__rmqueue() 是伙伴系统分配路径的核心调度器。它在持有 zone->lock 的前提下,按照碎片化风险从低到高的顺序,依次尝试不同的分配策略,直到成功或彻底失败。核心作用与策略链它的本质是一个多级降级策略链:先尝试最“干净”的方…

2026/10/12 2:24:22 阅读更多 →
游戏引擎中物理步进与动画采样的同步机制解析

游戏引擎中物理步进与动画采样的同步机制解析

1. 这不是教科书,是我在三个项目里拆过七次引擎后写下的物理与动画系统手记“游戏引擎架构深度解析(三):物理与动画系统”——看到这个标题,你大概率正卡在某个角色落地时穿模、布料抖动像癫痫发作、或者刚加完一个新关…

2026/10/12 2:24:22 阅读更多 →
产业与汇率全景分析深入分析多表格形成一篇文章

产业与汇率全景分析深入分析多表格形成一篇文章

产业与汇率全景深度分析:汇率是外生变量,产业是底层根基引言汇率从来不是孤立的数字,它是一国产业竞争力、贸易结构、资本流动、宏观政策、全球供需格局共同定价的结果;反过来,汇率波动又会重塑产业成本、订单、利润、…

2026/10/12 2:23:21 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →