Silverlight и аннотации данных

Когда я не использую элементы управления данными, такие как DataForm и DataGrid, можно ли использовать в моих объектах такие атрибуты, как [Required], [StringLength]? Могут ли они использоваться для проверки вне вышеупомянутых элементов управления данными?

Если да, не могли бы вы указать мне на несколько примеров или документации. Я хотел бы запретить пользователям нажимать кнопку ОК, если есть какие-либо ошибки проверки, и хотел бы избежать выдачи исключений из установщиков (возможно?).


person DaveB    schedule 26.08.2009    source источник


Ответы (1)


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

Из сообщения, вот образец свойства с логикой проверки, добавленной вручную.

[DataMember()]
[Key()]
[ReadOnly(true)]
public int EmployeeID
{
    get
    {
        return this._employeeID;
    }
    set
    {
        if ((this._employeeID != value))
        {
            ValidationContext context = new ValidationContext(
                this, null, null);
            context.MemberName = "EmployeeID";
            Validator.ValidateProperty(value, context);
            this._employeeID = value;
            this.OnPropertyChanged("EmployeeID");
        }
    }
}       
person Brad Tutterow    schedule 26.08.2009
comment
Это хорошо работает, если пользователь изменил какое-либо существующее значение или ввел значение. - person DaveB; 29.08.2009