Получить статус проверки элемента управления WPF - PullRequest
0 голосов
/ 06 февраля 2011

Добрый вечер,

У меня есть класс PhoneNumber с разделенными частями телефонного номера (код города, префикс, суффикс), и я проверяю текстовые поля по длине и недопустимым кодам города.Я хочу создать поведение, которое автоматически переходит к следующему элементу управления, когда текущий действует.Я мог бы жестко закодировать возможность в коде позади, обходя, но я бы предпочел проверку пользовательских данных и поведения, чтобы сделать это последовательно и повторно использовать эту способность.

Я сталкиваюсь сПроблема, однако, пытается получить состояние проверки элементов управления TextBox.Где вы можете найти это?Если есть способ получить это значение, есть ли связанное событие для его изменения?

Стиль элемента управления, который подключает проверку

            <Style x:Key="ToolTipValidation" TargetType="{x:Type Control}">
                <Setter Property="Validation.ErrorTemplate" Value="{StaticResource StandardErrorValidationTemplate}"/>
                <Style.Triggers>
                    <Trigger Property="Validation.HasError" Value="True">
                        <Setter Property="ToolTip" Value="{Binding (Validation.Errors)[0].ErrorContent, RelativeSource={x:Static RelativeSource.Self}}"/>
                    </Trigger>
                </Style.Triggers>
            </Style>

Очевидно, когда к элементу управления применен шаблон ошибкито есть ошибка.По какой-то причине Behavior ErrorHandler не подхватывает его.

1 Ответ

1 голос
/ 06 февраля 2011

Загляните в Validation.HasError прикрепленное свойство.Также есть событие Validation.Error, которое вы можете обработать.

Обновление:

Вы можете подписаться на событие Validation.Error в выделенном коде следующим образом:

Validation.AddErrorHandler(myTextBox, OnValidationError);

В обработчике ошибок может выглядеть так:

private void OnValidationError(object o, ValidationErrorEventArgs e)
{
    if (e.Action == ValidationErrorEventAction.Added)
    {
        // on error added logic
    }
    else
    {
        // on error removed logic
    }           
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...