You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MudTimePicker绑定TimeSpan?后手动输入无变更触发的问题排查

问题:MudTimePicker手动输入值时无法触发变更检测

我一直被这个问题困扰,怀疑是不是漏掉了什么明显的点。我想把TimeSpan?绑定到MudTimePicker上,同时希望值变化时触发指定方法。我的时间选择器代码如下:

<MudTimePicker Label="Time duration"
               HelperText="Enter any numeric value as hours:minutes:seconds"
               Editable="true"
               @bind-Time="@Timespan"
               ImmediateText="true"
               Placeholder="hh:mm:ss"
               Mask="@(new DateMask("00:00:00"))"/>

通过控件界面(如点击选择时间)编辑时,事件能正常触发,但手动在输入框中输入合法时间值,即使按下回车,也无法检测到值的变更。

这个问题和之前某个关于MudDatePicker的问题类似,但那个问题使用的是单向绑定,而MudTimePicker的文档明确说明:

Note: Always use the two-way binding @bind-Time to bind to a field of type TimeSpan?

我已经尝试了以下方法,但均未成功:

  • 同时使用@bind-Time和@bind-Time:after:添加@bind-Time:after后绑定失效,无法获取用户输入的值
  • 分别绑定Time="@someTimespan"和TimeChanged="@onTimespanChanged":正如文档所述,绑定失效
  • 使用后台字段并在set中调用方法:绑定同样失效,且违反Blazor规范,会触发BL0007警告,代码如下:
private TimeSpan? timespan;

[Parameter]
public TimeSpan? Timespan 
{
    get { return timespan; }
    set { timespan = value; OnTimespanChanged(); } 
}

内容的提问来源于stack exchange,提问作者alelom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:09:55