0

我在 .NET 5 应用程序中使用 Blazorise 0.9.4.7。我想要一组切换按钮,例如一个带有 Eye 的按钮,单击时 Eye 会转换为 EyeSlash。

我已经尝试了几个不起作用的替代方案......有什么建议吗?

<Icon @ref="ShowIcon" Clicked="e => Show(process)" Name="IconName.Eye" />

然后在cs

public void Show(Process project)
{
    process.ToggleShow();
    ShowProcessIcon.Name = process.Show ? IconName.EyeSlash : IconName.Eye;
}

这也不起作用,我不应该在图标本身之外为 Name 分配任何东西。

我也试过

<Button Clicked="e => Show(process)">
    <ChildContent>
        <Icon Name="IconName.Eye" Visibility="@(process.Show ? Visibility.Visible : 
Visibility.Invisible)"/>
        <Icon Name="IconName.EyeSlash" Visibility="@(process.Show ? Visibility.Invisible : Visibility.Visible)"/>
    </ChildContent>
</Button>

但是也不管用...

提前致谢。吉列尔莫。

4

1 回答 1

1

最好使用一个Icon,然后Name根据可见状态切换。

<Button Clicked="@ToggleIcon">
    <Icon Name="@(visible ? IconName.Eye : IconName.EyeSlash)" />
</Button>
@code {
    bool visible;

    Task ToggleIcon()
    {
        visible = !visible;

        return Task.CompletedTask;
    }
}

此外,最好有一个Task-able 方法而不是void. 这样 Blazor 将自动StateHasChanged为您触发。

于 2021-11-17T14:47:05.227 回答