【问题标题】:How do i force wpf ValidationRules binding?我如何强制 wpf ValidationRules 绑定?
【发布时间】:2014-07-05 23:17:38
【问题描述】:

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

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

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

如果我能以某种方式同时对所有控件执行此操作,那就太好了。

谢谢你。

【问题讨论】:

    标签: c# wpf mvvm validationrules


    【解决方案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">
    

    这里有一个简单的example 说明如何实现IDataErrorInfo

    【讨论】:

    • 感谢您的回答,但是:1. 我已经使用 ValidationRule 类实现了我的验证规则,不想重新实现它们。 2.我不想在后面写任何代码。 3. 我不希望在用户尝试保存之前默认显示错误。
    猜你喜欢
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2013-05-09
    相关资源
    最近更新 更多