Matblazor组件属性:内容复杂

Stu*_*urm 1 binding blazor matblazor

我正在尝试制作一个按钮,如果某个条件为假,该按钮将被禁用。对于常规按钮,这有效:

<button @disabled="!IsReady">Click me</button>
@code
{
    public bool IsReady { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 MatBlazor 库,其MatButton版本为button

<MatButton Disabled="@!IsReady">Click me</MatButton>
Run Code Online (Sandbox Code Playgroud)

后者不起作用:它给出以下错误:

组件属性不支持复杂内容(混合 C# 和标记)

在好的 WPF 中,我们可能会在绑定中使用转换器,因此绑定的布尔值是反转的。这是 MatBlazor 的限制吗?

我看到的快速解决方案是执行以下操作:

<MatButton Disabled="@IsNotReady">Click me</MatButton>
@code
{
    public bool IsReady { get; set; }
    public bool IsNotReady => !IsReady;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

Stu*_*urm 5

解决方案最终非常简单:您只需要用括号将 C# 代码括起来:

<MatButton Disabled="@(!IsReady)">Click me</MatButton>
Run Code Online (Sandbox Code Playgroud)