我如何强制wpf ValidationRules绑定?

时间:2014-05-17 15:52:08

标签: c# wpf mvvm 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/>

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

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

如果我能够以某种方式同时对所有控件进行操作,那也很好。

谢谢你。

1 个答案:

答案 0 :(得分:-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

的简单example