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
相关产品推荐
相关产品推荐

