Проверка ввода элемента управления Silverlight - PullRequest
0 голосов
/ 20 марта 2012

Я хочу реализовать два типа проверки в моем приложении Silverlight.Я хочу, чтобы правила "бизнес-логики" были реализованы в viewmodel (например, дата окончания не ранее даты начала) , которую я уже выполнил , и проверка ввода где-то на главном элементе управления,где поля ввода (как дата в плохом формате).Есть ли что-нибудь, что Silverlight может «помочь» мне?Я имею в виду, что есть по крайней мере UnsetValue для меня, но есть ли какое-либо событие, связанное с этим, или я должен перехватить все события OnChanged?Также есть ли способ вручную отображать красную рамку вокруг элемента управления, когда я хочу?

Извините, это не было очевидно из моего вопроса, но я закончил с частью, которая включает в себя правила "бизнес-логики" - моя модель представлениядействительно реализует INotifyDataErrorInfo, я обеспокоен вторым типом проверки.

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Реализация INotifyDataErrorInfo в вашей ViewModel, чтобы включить проверку на уровне View Model.

0 голосов
/ 20 марта 2012

Реализация INotifyDataErrorInfo в ваших свойствах

затем в вашей собственности, связанной в XAML, используйте понятное отображаемое имя:

private DateTime? _datumP = DateTime.Now;
[Display(Name = "Date", ResourceType = typeof(CommonExpressions))]
public DateTime? DatumP
{
    get
    {
        return _datumP;
    }
    set
    {
        if (_datumP != value)
        {
            _datumP = value;
            RaisePropertyChanged(DatumPonudbePropertyName);
        }

        ValidateDate(DatumPonudbe, DatumPonudbePropertyName);
    }
}

Тогда ваш метод проверки дат:

 public void ValidateDate(DateTime? value, string propertyName)
 {
     RemoveError(propertyName, CommonErrors.DatumNull_ERROR);

     if (value == null)
         AddError(propertyName, CommonErrors.DatumNull_ERROR, false);

 }

А теперь для части XAML:

<sdk:DatePicker Width="100" SelectedDate="{Binding DatumP, Mode=TwoWay, 
                            NotifyOnValidationError=True, ValidatesOnNotifyDataErrors=True, 
                            ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" />

приписка

CommonExpressions и CommonErrors - мои файлы ресурсов для мультиязычности, здесь вы можете использовать простые строки.

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