例如,我有一个通过mvvm模式绑定的文本框:
<TextBox VerticalAlignment="Center" Grid.Column="2" Grid.Row="1" Validation.ErrorTemplate="{StaticResource ValidationErrorTemplate}">
<TextBox.Text>
<Binding Path="Entity.LastName" NotifyOnValidationError="True">
<Binding.ValidationRules>
<validations:MandatoryValidationRule/>
此特定规则检查是否向文本框中输入了任何值。但是,只有当用户输入一些文本然后删除它时,才会激活此规则。大多数情况下,当用户遗漏一个空白字段时,那是因为他忘记填充它了。
那么,在允许用户实际保存数据之前,如何从视图模型强制检查所有验证规则呢?
如果我能以某种方式同时对所有控件执行此操作,那就更好了。
谢谢你。
你可以强制规则在载入窗口后自动更新,这样空白字段将指示错误:
public void Window_Loaded(object sender, RoutedEventArgs e)
{
textbox1.GetBindingExpression(TextBox.TextProperty).UpdateSource();
textbox2.GetBindingExpression(TextBox.TextProperty).UpdateSource();
}
或者,您可以实现IDataErrorInfo
并更新您的文本绑定,以便ValidatesOnDataErrors
<Binding Path="Entity.LastName" NotifyOnValidationError="True" ValidatesOnDataErrors="True">
下面是一个关于如何实现IDataErrorInfo
的简单示例