在wpf开发中,你会经常遇到一些需要验证填写内容不能为空,或者是其他的一些规则,比如正则表达式等,以下就是一个示例,同时提供了很多种方式。
1.方式1.使用第三方库:ValueConverters
第一步:在项目中nuget引用ValueConverters
![image]()
第二步:新建View:ValueConverterView
<Window.Resources>
<conv:BoolToVisibilityConverter x:Key="AgreeConvert" IsInverted="True"/>
</Window.Resources>
<Grid.RowDefinitions>
</Grid.RowDefinitions>
第三步:引用命名空间:xmlns:conv="clr-namespace:ValueConverters;assembly=ValueConverters",并使用ValueConverterGroup定义每个不一样的验证,并显示,如果按照规则填好,就取消错误提示。
<Window.Resources>
<conv:BoolToVisibilityConverter x:Key="AgreeConvert" IsInverted="True"/>
<conv:ValueConverterGroup x:Key="userNameToVisibilityConverter">
conv:StringIsNotNullOrEmptyConverter/
conv:BoolInverter/
conv:BoolToVisibilityConverter/
</conv:ValueConverterGroup>
<conv:ValueConverterGroup x:Key="passwordToVisibilityConverter">
<conv:IsInRangeConverter MaxValue="16" MinValue="6"/>
conv:BoolInverter/
conv:BoolToVisibilityConverter/
</conv:ValueConverterGroup>
<conv:ValueConverterGroup x:Key="ageToVisibilityConverter">
conv:StringToDecimalConverter/
<conv:IsInRangeConverter MaxValue="99" MinValue="18"/>
conv:BoolInverter/
conv:BoolToVisibilityConverter/
</conv:ValueConverterGroup>
<conv:StringIsNotNullOrEmptyConverter x:Key="StringIsNotNullOrEmptyConverter"/>
</Window.Resources>
<Grid.RowDefinitions>
</Grid.RowDefinitions>
效果如下:
![image]()
内容填充完,红色提示消失,
![image]()
当然,这还不算完善,我们可以使用一些更加完善的方式。如以下的形式
2.方式2:使用IDataErrorInfo,直接后台绑定需要提示的内容:
第一步:View页面展示如下:
<Window.Resources>
</Window.Resources>
<Grid.RowDefinitions>
</Grid.RowDefinitions>