Валидация Silverlight для TextBox, связанной с ненужным типом данных

StackOverflow https://stackoverflow.com//questions/11695395

Вопрос

Silverlight Validation Использование INOTIFYDATAERRORINFO отлично работает с отображением ошибки Slick, пока я не начал пытаться использовать его на текстовых ящиках, которые связаны с свойствами типов некруточных данных.Мой план состоял в том, чтобы использовать поселенцы свойств, чтобы сделать логику проверки, добавлять и удалять ошибки оттуда по мере необходимости.Он отлично работает на текстовых ящиках, которые являются строками, но если у вас есть текстовое поле для int, и вы вводите строку, улавтер даже не вызывается (где я смогу добавить ошибку, что явно не являются числовыми значениямиинвалид).Какой предложенный курс действий отсюда?Я посмотрел в ValueConververs, но они слишком далеко от логики inotifydataErrinfo в моем классе, которые подтверждаются.

Гипотетический пример:

public class MyClass
{
    private string _prod;
    public string Prod
    {
        get { return _prod; }
        set //This works great
        {
            if (value.Length > 15)
            {
                AddError("Prod", "Cannot exceed 15 characters", false);
            }
            else if (value != _prod)
            {
                RemoveError("Prod", "Cannot exceed 15 characters");
                _prod= value;
            }
        }
    }

    private int _quantity;
    public int Quantity
    {
        get { return _quantity; }
        set //if a string was entered into the textbox, this setter is not called.
        {
            int test;
            if (!int.TryParse(value, test))
            {
                AddError("Quantity", "Must be numeric", false);
            }
            else if (test != _quantity)
            {
                RemoveError("Quantity", "Must be numeric");
                _quantity= test;
            }
        }
    }

    protected Dictionary<String, List<String>> errors = 
        new Dictionary<string, List<string>>();

    public void AddError(string propertyName, string error, bool isWarning)
    {
        //adds error to errors
    }
    public void RemoveError(string propertyName, string error)
    {
        //removes error from errors
    }

    //INotifyDataErrorInfo members...
}
.

Это было полезно?

Решение

Предлагаю, что вы связываете значение TextBox в любом случае и выполните проверку. В случае успешной проверки пройдите значение на другой свойство с типом данных, которые вы на самом деле ищете (например, int).В любом другом случае не удастся проверкой. Просто обходной путь ... но работает для меня.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top