FluentUI Blazor 中 SelectColumn 组件的单选模式增强
在 FluentUI Blazor 组件库中,SelectColumn 组件是数据表格中用于行选择的重要功能组件。最近社区贡献者为该组件提出了一个非常有价值的增强功能,使得在单选模式下能够保持选中状态不被取消。
当前单选模式的行为
在现有的 FluentUI Blazor 实现中,当 SelectColumn 设置为 Single 选择模式时,用户点击已选中的行会导致该行被取消选中。这种行为在某些业务场景下可能不符合预期,特别是当用户需要确保始终有一个选项被选中时。
功能增强方案
社区贡献者提出了两种实现方案:
-
参数控制方案:通过新增 AllowSingleModeDeselect 布尔参数来控制是否允许在单选模式下取消选中,默认值为 true 以保持向后兼容。
-
新增模式方案:添加一个新的选择模式 SingleSticky,专门用于实现"粘性"单选行为,即选中后不能通过点击取消。
经过项目维护团队的讨论,最终选择了第二种方案,认为新增一个明确的模式比添加参数更为清晰和易于理解。
技术实现细节
实现这一功能的核心修改位于处理选择逻辑的 AddOrRemoveSelectedItemAsync 方法中。对于 SingleSticky 模式,当检测到用户点击已选中的项目时,直接返回而不执行取消选中操作。
if (SelectMode == DataGridSelectMode.SingleSticky &&
_selectedItems.Count == 1 &&
_selectedItems.Contains(item))
{
return; // 不执行取消选中操作
}
使用示例
开发者现在可以通过简单设置 SelectMode 属性来使用这一新功能:
<SelectColumn TGridItem="Product"
SelectMode="@DataGridSelectMode.SingleSticky"
SelectFromEntireRow="true" />
测试保障
为确保新功能的稳定性,所有原有的单选模式测试用例都被复制并适配到新的 SingleSticky 模式中,保证了功能的一致性和可靠性。
总结
这一增强为 FluentUI Blazor 的数据表格选择功能提供了更灵活的控制方式,特别适合那些需要确保始终有选项被选中的业务场景。通过新增明确的 SingleSticky 模式而非参数控制,API 设计保持了简洁性和一致性,体现了 FluentUI 团队对组件设计质量的重视。
对于开发者而言,这一改进意味着可以更轻松地实现常见的业务需求,而无需自行处理选择状态的维护逻辑,进一步提升了开发效率和代码质量。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0231
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
JoyAI-VL-Interaction-Preview京东开源首个开源、视觉驱动的实时交互模型——它能实时监控视频流,并自主决定何时发言、保持沉默或委托任务。Jinja00
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0152
kornia🐍 空间人工智能的几何计算机视觉库Python02
PaddleParallel Distributed Deep Learning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)C++02