MudDatePicker DefaultValue 加 DateChange

MudDatePicker DefaultValue plus DateChange

我想使用 MudDatePicker 元素,我需要能够在加载时设置默认值但同时为其定义 onChange 事件。我正在尝试这样做,但错误提示“该组件参数已用于此组件两次或多次”。我有办法做到这一点吗?

<MudDatePicker @bind-Date="@DefaultValue.Value" Label="Date" DateChanged="OnDateChange"
        Required="true" Class="mb-3" />

删除 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();
            }
        }

如果您在 Blazor 中有双向绑定,即 @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