MudBlazor MudChipSet:如何以编程方式选中MudChip?
问题原因分析
核心问题在于MudChipSet的选中逻辑依赖对象引用相等性,而非你用来匹配的Text属性。
你当前的操作存在关键矛盾:
- 页面上渲染的MudChip是基于原始列表对象动态生成的实例
- 你新创建了一批仅设置
Text属性的MudChip对象,再筛选出Text匹配的赋值给selectedChip
这两类MudChip是完全独立的对象实例——哪怕Text属性完全一致,它们的内存引用也不相同。MudChipSet判断芯片是否被选中,是看绑定的selectedChip是否和页面上某个芯片的实例引用完全匹配,所以你的赋值操作无法触发选中效果。
正确解决思路
- 不要重新创建MudChip对象,直接从渲染芯片时所用的原始数据源列表中筛选匹配项,将原始对象绑定到芯片的
Value属性,同时把selectedChip绑定为该原始对象(若用多选则绑定对应集合)。 - 示例逻辑(伪代码):
// 假设原始数据源是List<YourModel> _items; <MudChipSet @bind-SelectedChip="selectedChip"> @foreach(var item in _items) { <MudChip Text="@item.Name" Value="@item" /> } </MudChipSet> // 选中时直接从原始列表匹配 selectedChip = _items.FirstOrDefault(x => x.Name == "目标文本");
通过操作同一个对象引用,MudChipSet就能正确识别并选中对应芯片。
内容的提问来源于stack exchange,提问作者mr-woodapple
相关产品推荐
相关产品推荐

