Blazor中MudTextField文本变化时实时启用MudButton的问题
问题出在MudTextField默认的更新模式上:它默认使用UpdateMode.LostFocus,只有当文本框失去焦点时才会更新绑定值并触发ValueChanged事件,所以按钮只能在点击文本框外部后才启用。
只需给MudTextField添加UpdateMode="UpdateMode.PropertyChanged"属性,就能让文本框在每输入一个字符时立即触发ValueChanged,从而实时更新按钮状态:
<MudTextField Value="Name" HelperText="Enter your name" ValueChanged="@(EventCallback.Factory.Create<string>(this, OnNameChanged))" UpdateMode="UpdateMode.PropertyChanged"></MudTextField> <MudButton Variant="Variant.Filled" Color="Color.Primary" Disabled="(!HasNameChanged)">Save</MudButton> @code { public string Name { get; set; } = "John Smith"; public bool HasNameChanged {get; set;} = false; public void OnNameChanged(string value) { Name = value; HasNameChanged = true; } }
如果需要更精准的判断(比如仅当文本和初始值不同时才启用按钮),可以修改OnNameChanged方法对比新旧值:
private readonly string _initialName = "John Smith"; public void OnNameChanged(string value) { Name = value; HasNameChanged = value != _initialName; }
内容的提问来源于stack exchange,提问作者Riley Christian
相关产品推荐
相关产品推荐

