我想以一种需要能够在加载时设置默认值但同时为其定义 onChange 事件的方式使用MudDatePicker元素。我正在尝试执行此操作,但错误提示“该组件参数已用于此组件两次或多次”。有没有办法我可以做到这一点?
<MudDatePicker @bind-Date="@DefaultValue.Value" Label="Date" DateChanged="OnDateChange"
Required="true" Class="mb-3" />
我想以一种需要能够在加载时设置默认值但同时为其定义 onChange 事件的方式使用MudDatePicker元素。我正在尝试执行此操作,但错误提示“该组件参数已用于此组件两次或多次”。有没有办法我可以做到这一点?
<MudDatePicker @bind-Date="@DefaultValue.Value" Label="Date" DateChanged="OnDateChange"
Required="true" Class="mb-3" />
如果您在 Blazor 中具有双向绑定 ie @bind-Date="date"
,则可以将其转换为具有必须设置值的更改事件的单向绑定。双向绑定只是语法糖,并且会在幕后做同样的事情。
<MudDatePicker Date="@_date" Label="Date" DateChanged="OnDateChange"
Required="true" Class="mb-3" />
@inject ISnackbar Snackbar
@code {
DateTime? _date = new DateTime(2021, 12, 24);
void OnDateChange(DateTime? newDate)
{
_date=newDate;
// here you can do something when the date changes.
Snackbar.Add($"Date changed to {_date}");
}
}
这是您可以使用的片段:https ://try.mudblazor.com/snippet/mYcPFPvLnlyEHeOF
删除DateChanged="OnDateChange"
并更改@bind-Date="DefaultValue.Value"
为@bind-Date="DefaultValue"
。为该属性DefaultValue
创建一个 getter 和 setter。因为您有两种使用方式绑定@bind-Date="DefaultValue"
,所以每次更改值时都会调用 setter 部分。
我在下面添加了一些示例代码:
DateTime? _defaultValue = DateTime.Now;
private DateTime? DefaultValue
{
get => _defaultValue;
set
{
_defaultValue = value;
OnDateChange();
}
}