Я просто наткнулся на поведение 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 индивидуальным интерфейсом, то имя становится доступным для редактирования.
Я не понимаю, почему наследство портит вещи. Может ли кто-нибудь просветить меня?