我在 MudChipSet 中使用了几个 MudBlazors MudChip。确切的数量根据列表的长度而变化(在 MudChip 上创建该列表中的每个对象)。
现在我想根据保存的数据选择其中一个芯片。我的方法是创建一个 MudChips 列表,每个列表项一个(仅设置“文本”属性)。然后,我进行过滤以获取“Text”与我拥有的字符串匹配的结果,并将该结果设置为绑定“selectedChip”变量。
但是,这行不通。知道为什么吗?
有两件事:
ChipSet
foreach 循环渲染的芯片。变化:
// Run this on component initialzing to pre-set the selected chip
protected override void OnAfterRender(bool firstRender)
{
if (!firstRender) return;
selectedChip = availableChips.Single(e => e.Text == SelectedLocation);
StateHasChanged();
}
添加对正在渲染的芯片的引用
@foreach (var entry in GetWorkLocationHoursMock())
{
<MudChip @ref=ChipRef Text="@entry.Location" Color="Color.Primary"/>
}
并将这些项目添加到您的列表中,而不是创建新的
MudChip
对象
private MudChip ChipRef { set => availableChips.Add(value); }
最终结果应该类似于this