在C#中执行WPF元素验证?

时间:2009-10-21 17:15:41

标签: c# wpf .net-3.5

如何在用户点击按钮时强制验证?

人们会认为这应该很容易,因为如果元素值有效,你总是要做点什么。

private void buttonOk_Click(object sender, RoutedEventArgs e)
{
    // How can I force the validation here? So that empty values are not allowed (validator doesn't allow those)

    if (Validation.GetHasError(textBoxURI) ||
        Validation.GetHasError(textBoxName)) // These return valid values if user has not changed values in fields.
        return;

    DialogResult = true;
    this.Close();
}

正如你猜测的那样,根据我的验证器(如果我在文本框中键入内容),空值无效,然后将其清空并模糊焦点,它将显示无效值。

作为旁注:UpdateSourceTrigger不会影响未验证初始值的相关问题。

2 个答案:

答案 0 :(得分:1)

您需要在BindingExpression上调用UpdateSource。这是一个带有文本框的示例,我们强制进行验证:

BindingExpression exp = textBox.GetBindingExpression(TextBox.TextProperty);
exp.UpdateSource();

答案 1 :(得分:0)

您是否尝试使用 MultiTrigger MultiDataTrigger

使用此功能,您可以定义当前规则......以及您可能提出的任何其他验证规则。

Check this out: