点击按钮查看验证结果

本文关键字:验证 结果 按钮 | 更新日期: 2023-09-27 18:20:42

我有一堆文本框,所有文本框都有数据验证,如下所示:

xaml

<TextBox>
    <TextBox.Text>
        <Binding Path="Name" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <local:Validation2/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

c#

public class Validation2 : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        double result;
        return double.TryParse(value.ToString(), out result) == true ? new ValidationResult(true, null) : new ValidationResult(false, "error");
    }
}

这很好,每当我在文本框中输入除数字以外的任何内容时,都会弹出一个错误。现在我有了一个发送"表单"的按钮,我想在做任何事情之前用这个按钮检查是否有任何验证错误。我该怎么做呢。

点击按钮查看验证结果

在将新值应用于源属性之前进行验证。在您的情况下-当您更改财产时。在wpf中也有更多的情况,但没有OnFormClosing或类似的情况。这是经过设计的:控件属性可能绑定到其他控件属性(或绑定到相同属性的多个控件),因此验证最晚在更改焦点时发生。

如果没有交叉绑定,一个属性只绑定到一个控件,那么当表单即将关闭时,可以使用UpdateSourceTrigger.Explicit为每个绑定调用UpdateSource()

其他解决方案是不将错误显示为弹出窗口。错误状态可能是红色边框或附近的!图标。

我自己根本不使用验证机制。相反,我有自验证控件,例如,具有属性IsDoubleTextBox,以启用对double值的自动验证,以及属性GetDouble,以解析值。我更喜欢在最后验证所有内容,同时显示用户是否可以验证的实际状态(红色边框、闪烁的标题等)。每个控件