我只是偶然发现了WPF中DataGrid
的行为,坦率地说我不知道我做错了什么或它是WPF DataGrid
的标准行为。
所以我有一个界面,我们称之为IItem。 IItem有几个属性(Name,Active,Timestamp)。这个接口继承自其他接口,我们称之为IBaseItem。 IBaseItem还具有属性(Id,Selected,Active,Timestamp)。所以我希望当我在XAML中使用DataGrid
创建AutoGenerateColumns=true
并且绑定源是List<IItem>
时,它也会生成Id和Selected列。
相反,它只生成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作为单独的界面,那么名称就变得可编辑了。
我不明白为什么继承会弄乱事情。谁能开导我?