Silverlight: отключить кнопку при ошибке проверки?(Проблема с проверкой) - PullRequest
0 голосов
/ 03 октября 2010

В моем приложении SL4 есть класс, представляющий одну сущность, о которой пользователь вводит данные. Я делаю проверку данных следующим образом:

    private double cost;
    public string Cost
    {
        get
        {
            return String.Format("{0}{1}", DOLLAR_SYMBOL, cost);
        }
        set
        {
            string price = getPriceFromCost(value);
            if (!double.TryParse(price, out cost))
            {
                throw new ArgumentException("Please enter a number.");
            }

            OnPropertyChanged("Cost");
        }
    }

Это прекрасно работает. Однако, если пользователь вводит действительное значение, а затем недействительное, игнорирует ошибку проверки и нажимает «Отправить», сущность будет создана со старым допустимым значением. Я бы скорее заставил пользователя исправить ошибку. Как отключить кнопку «Добавить»?

Кроме того, я хотел бы сделать некоторые другие формы проверки, когда пользователь нажимает кнопку добавления, но я все еще хочу, чтобы приятный эффект выделения поля ввода текста был отмечен красным, а сообщение выскочило. Как я могу сделать это, не бросая ArgumentExceptions?

Ответы [ 3 ]

0 голосов
/ 26 ноября 2010

Простым решением будет следовать тому, что сказано в этой ветке форума . Если вы используете только исключения для проверки входных данных, вам нужно установить NotifyOnValidationError=True в привязке ваших элементов управления, и тогда любые ошибки будут объявлены в событии BindingValidationError вашего элемента управления.

Если вы используете Silverlight 4, конечно, лучше использовать INotifyDataErrorInfo.

0 голосов
/ 08 июля 2011
  1. Вам необходимо свойство в View Model для хранения состояния свойства IsEnabled Button (вам необходимо связать это свойство в XAML).
  2. Теперь вам нужно создать делегат + событие для обнаружения и вызова события CostChange.
  3. В представлении Model подпишитесь на это событие и установите свойство IsEnabled, определенное в 1.
0 голосов
/ 03 октября 2010

Вы можете переключать bool вместе с генерацией исключения и привязывать IsEnabled вашей кнопки к этому bool.

Вы можете выполнить практически любую задачу проверки с помощью Служб RIA WCF - я предлагаю вам начать с последних сообщений в блоге Джеффа Хэндлиса и взять их оттуда. http://jeffhandley.com/archive/2010/09/22/RiaServicesStandardValidators.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...