Silverlight и DataAnnotations - PullRequest
       11

Silverlight и DataAnnotations

2 голосов
/ 26 августа 2009

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

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

1 Ответ

1 голос
/ 26 августа 2009

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

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

[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");
        }
    }
}       
...