Выполнить проверку элемента WPF в C #? - PullRequest
2 голосов
/ 21 октября 2009

Как я могу форсировать проверку, когда пользователь нажимает кнопку?

Можно подумать, что это должно быть легко, поскольку всегда нужно что-то делать, если значения элемента действительны.

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 ]

1 голос
/ 21 октября 2009

Вам необходимо вызвать UpdateSource для BindingExpression. Это пример с текстовым полем, в котором мы выполняем проверку:

BindingExpression exp = textBox.GetBindingExpression(TextBox.TextProperty);
exp.UpdateSource();
0 голосов
/ 21 октября 2009

Вы пытались использовать MultiTrigger или MultiDataTrigger ?

Используя это, вы можете определить ваше настоящее правило ... и любое другое правило проверки, которое вы можете придумать.

Проверьте это:

...