0

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

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

2 回答 2

0

如果您在 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

于 2021-11-17T08:46:31.550 回答
0

删除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();
            }
        }
于 2021-11-10T16:28:50.710 回答