最开始想复杂了想着通过获取HTML元素的ID进行图标的显隐操作,最后发现Blazor好像无法获取HTML元素,要么就是通过JS比较麻烦。最后问了下大佬,就用了一下三元运算符 就解决了。
应用场景
单击树形菜单的某个节点,使选中的节点显示后面的图标。未选中的节点不显示。如下图:
直接上代码:
foreach (var item in TreeItems)
{
item.Template = (RenderTreeBuilder __builder) =>
{
<span>@item.Text</span>
<Button class="styleicon" style="width:25px;height:25px; color:blue" OnClick="OnCreateIceBoxClick" Color="Color.None" Icon="@(IceRoomconID==item.Key.ToString()?"iconfont icon-bingxiang":"")">
</Button>
<Button class="styleicon" style="width:25px;height:25px; color:green" OnClick=" async ()=> { await OnEditClick(_Roomite); }" Color="Color.None" Icon="@(IceRoomconID==item.Key.ToString()?"iconfont icon-bianji1":"")">
</Button>
<PopConfirmButton class="styleicon" style="width:25px;height:25px;color:red" Placement="Placement.Top" Color="Color.None" ConfirmIcon="fa fa-exclamation-triangle text-danger" ConfirmButtonColor="Color.Danger" Title="删除房间" OnConfirm="DeleteRoom" Icon="@(IceRoomconID==item.Key.ToString()?"iconfont icon-shanchu":"")" Content="@($"您确定要删除{_IceBox.Text}吗?")" />
};
if (!item.HasChildNode)
{
item.CssClass = "text-danger";
}
}
主要控制代码 就一句:通过三元运算符控制Icon的显隐@(IceRoomconID==item.Key.ToString()?"iconfont icon-bianji1":"")
当我们点击树形菜单的时候,获取当前节点ID,然后和已经赋值好的ID进行比较,如果相等,就赋值给它图标。
IceRoomconID = item.Key.ToString();
这样就可以很好的控制显隐操作呢。