2

例如,我有一个通过 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/>

此特定规则检查是否在文本框中输入了任何值。但是,只有当用户输入一些文本然后将其删除时,才会激活此规则。大多数时候,当用户遗漏一个空白字段时,是因为他忘记填写了。

那么,在允许用户实际保存数据之前,如何从视图模型强制检查所有验证规则?

如果我能以某种方式一次对所有控件执行此操作,那也很好。

感谢你。

4

1 回答 1

-1

您可以在加载窗口后强制规则自动更新,以便空白字段指示错误:

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

于 2014-05-17T18:14:11.127 回答