我是 blazor 的新手,我遇到了 MudBlazor 组件。这些都很棒,所以我决定在我的项目中实现它们。我想要做的是将我在自己的自定义组件中使用的每个 MudBlazor 组件包装起来,这样如果我将来更改任何内容都会很简单(就像我已经决定从 Radzen 更改为 MudBlazor 的情况一样)。在大多数情况下,这是相当直接的,除了 @bind-Value 属性。我似乎无法弄清楚如何让它工作。这是我包装 MudBlazor“MudTextField”的自定义组件。
<MudTextField @bind-Value="@BindTo" Label="@Label" Variant="@Variant" Margin="@Margin"></MudTextField>
@code {
private string bindingValue;
[Parameter]
public string BindTo
{
get => bindingValue;
set
{
if (bindingValue == value) return;
bindingValue = value;
BindToChanged.InvokeAsync(value);
}
}
[Parameter] public EventCallback<string> BindToChanged { get; set; }
[Parameter] public string Label { get; set; }
[Parameter] public Variant Variant { get; set; } = Variant.Outlined;
[Parameter] public Margin Margin { get; set; } = Margin.Dense;
}
这是行不通的。当我在调用我的自定义组件时设置 BindTo 参数时,我可以看到 set 属性中的代码被调用,并且 bindingValue 被正确设置,但我绑定到的对象上的属性没有被更新。我需要对 BindToChanged 参数执行其他操作吗?我在研究这个问题时看到另一个例子中使用了它,但我真的不明白它应该做什么。任何帮助,将不胜感激。
谢谢!