在Blazor中,在foreach循环中检测选择元素的更改可以通过以下步骤实现:
public class ItemModel
{
public bool IsSelected { get; set; }
public string Name { get; set; }
}
@page "/foreach-loop-change-detection"
Item List
@foreach (var item in items)
{
ToggleSelection(item)" />
@item.Name
}
Selected Items: @selectedItemsCount
@code {
private List items;
private int selectedItemsCount;
protected override void OnInitialized()
{
items = new List()
{
new ItemModel { Name = "Item 1", IsSelected = false },
new ItemModel { Name = "Item 2", IsSelected = true },
new ItemModel { Name = "Item 3", IsSelected = false },
};
selectedItemsCount = items.Count(i => i.IsSelected);
}
private void ToggleSelection(ItemModel item)
{
item.IsSelected = !item.IsSelected;
selectedItemsCount = items.Count(i => i.IsSelected);
}
}
在上述示例中,我们使用一个foreach循环来遍历items列表,并为每个元素创建一个checkbox和一个显示名称的span。当checkbox的状态发生改变时,我们调用ToggleSelection方法来切换ItemModel对象的IsSelected属性并重新计算选中的元素数量。
这样,每当选择的元素发生更改时,@selectedItemsCount变量都会自动更新,以反映当前选中的元素数量。