Метка стиля данных на основе строгости проверки с Silverlight 4 - PullRequest
0 голосов
/ 28 января 2011

Я пытаюсь расширить проверку Silverlight, чтобы включить в нее уровень серьезности.Я использую подход, заключающийся в добавлении специального символа в начале сообщения, чтобы указать, является ли это ошибкой или предупреждением, и изменение стиля на красный или синий.Я успешно реализовал это для элемента управления Summery Validation, элементов управления вводом и ValidationToolTips, указав собственный стиль и используя конвертеры значений.Но я не могу заставить его работать с лейблами.

Моя проблема в том, что я не могу связать сообщение проверки.Я пробовал следующее безуспешно:

ИЛИ

Может кто-нибудь, пожалуйста, оказать некоторую помощь или предложить альтернативный подход.Ссылки и / или пример кода приветствуются.

1 Ответ

0 голосов
/ 08 июня 2011

Я решил эту проблему, выдав исключения разных типов (исключение ValidationWarning для предупреждений).Каждый раз, когда генерируется исключение проверки, срабатывает событие BindingValidationError.В обработчике событий я проверяю тип исключения и меняю стиль в зависимости от исключения:

    private void OnBindingValidationError(object sender, ValidationErrorEventArgs e)
    {
        var textBox = sender as TextBox;

        if (textBox != null)
        {
            if (e.Error.Exception is ValidationWarning)
            {
                UpdateStyle(textBox, "TextBoxWithWarning");
            }
            else
            {
                UpdateStyle(textBox, "TextBoxWithError");
            }
        }
    }

    private static void UpdateStyle(TextBox textBox, string styleName)
    {
        var newStyle = (Style)Application.Current.Resources[styleName];
        if (textBox.Style != newStyle)
        {
            textBox.Style = newStyle;
            textBox.Focus();
        }
    }
...