我如何强制wpf ValidationRules绑定?



例如,我有一个通过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的简单示例

最新更新