我在wpf-mvvm应用程序中工作,我也使用社区工具包.mvvm。在这里,我为文本框实现了Observable验证器,但它不会影响用户界面,
ViewModel:
public partial class UserViewModel : ObservableValidator
{
[ObservableProperty]
[Required(ErrorMessage ="Name is Required")]
[MinLength(3)]
private string name= "";
}
Xaml:
<TextBox Text="{Binding Name,UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
当我在少于3个字符的文本框上键入并离开它时,它不起作用,TextBox接受每个范围中的字符,也接受空字符。
谢谢!@mm8 先生
我只是错过了一个属性,-->[NotifyDataErrorInfo]。
现在工作正常。
ViewModel:
public partial class UserViewModel : ObservableValidator
{
[ObservableProperty]
[NotifyDataErrorInfo]
[Required(ErrorMessage ="Name is Required")]
[MinLength(3, ErrorMessage ="Name Should be at least 3 character")]
private string username;
}
Xaml:
<TextBox Text="{Binding Username, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
确认绑定正在工作。不需要将绑定的ValidatesOnDataErrors
属性设置为true
:
<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True}"/>