MudTreeView无法选中刚添加的项问题求助
解决MudTreeView添加项后无法立即选中的问题
问题原因
在添加新项后直接设置SelectedItem时,MudTreeView尚未完成新项的渲染,组件内部的项列表还未更新,导致设置的选中值无法匹配到刚添加的项,因此选中状态不生效。而后续手动选中时,组件已经完成了新项的渲染,所以可以正常选中。
解决方案
方案1:强制组件渲染后再设置选中值
通过InvokeAsync(StateHasChanged)触发组件更新,确保新项已被组件识别后,再设置选中值:
private async void Add() { var value = $"P{InitialTreeItems.Count}"; var treeItem = new TreeItemData<string> { Value = value, Icon = Icons.Material.Filled.Group}; InitialTreeItems.Add(treeItem); // 触发组件渲染,让新项被组件识别 await InvokeAsync(StateHasChanged); SelectedItem = value; }
方案2:使用组件实例方法直接选中项
给MudTreeView添加@ref引用,调用组件自带的SelectItem方法选中新项,这种方式更可靠:
- 给MudTreeView添加引用:
<MudTreeView @ref="_treeView" @bind-SelectedValue="SelectedItem" Items="InitialTreeItems"> <!-- 自定义项模板 --> </MudTreeView>
- 修改代码逻辑:
private MudTreeView<string> _treeView; private string SelectedItem; private void Add() { var value = $"P{InitialTreeItems.Count}"; var treeItem = new TreeItemData<string> { Value = value, Icon = Icons.Material.Filled.Group}; InitialTreeItems.Add(treeItem); // 直接调用组件方法选中新项 _treeView.SelectItem(treeItem); }
效果验证
修改后点击"Add"按钮,新添加的项会被立即选中,与"Select Trash"按钮的选中效果一致。
内容的提问来源于stack exchange,提问作者Juan
相关产品推荐
相关产品推荐

