Наследование может вызвать проблемы у свойства AutoGenerateColumns в DataGrid? - PullRequest
0 голосов
/ 13 марта 2012

Я просто наткнулся на поведение DataGrid в WPF и, честно говоря, я не знаю, сделал ли я что-то не так или это стандартное поведение WPF DataGrid.

Итак, у меня есть интерфейс, назовем его IItem. У IItem есть несколько свойств (Name, Active, Timestamp). Этот интерфейс наследуется от другого интерфейса, давайте назовем его IBaseItem. IBaseItem также имеет свойства (Id, Selected, Active, Timestamp). Поэтому я ожидаю, что когда я создам DataGrid в XAML с AutoGenerateColumns=true, а источником привязки будет List<IItem>, тогда он также сгенерирует Id и выбранные столбцы.

Вместо этого он генерирует только свойства Name, Active и Timestamp в виде столбцов. И Имя не редактируется (хотя оно имеет свойство setter), но Active - это.

public interface IBaseItem : INotifyPropertyChanged
{
    bool Selected { get; set; }
    int Id { get; }
    bool Active { get; set; }
            DateTime Timestamp { get; set;}
}

public interface IItem: IBaseItem, IEditableObject
{
    string Name { get; set; }
    new bool Active { get; set; }
    new DateTime Timestamp { get; }
}

Но если я разорву цепочку наследования и сделаю IItem индивидуальным интерфейсом, то имя становится доступным для редактирования.

Я не понимаю, почему наследство портит вещи. Может ли кто-нибудь просветить меня?

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