WPFの動作に出くわしましたがDataGrid
、率直に言って、何か間違ったことをしたのか、それとも WPF の標準的な動作なのかわかりませんDataGrid
。
インターフェイスがあるので、IItem と呼びましょう。IItem には、いくつかのプロパティ (Name、Active、Timestamp) があります。このインターフェイスは、他のインターフェイスから継承し、IBaseItem と呼ぶことができます。IBaseItem には、プロパティ (Id、Selected、Active、Timestamp) もあります。したがってDataGrid
、XAML でを作成しAutoGenerateColumns=true
、バインディング ソースが であるList<IItem>
場合、Id と選択された列も生成されると予想されます。
代わりに、Name、Active、および Timestamp プロパティのみを列として生成します。Name は編集できませんが (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 を個別のインターフェイスとして作成すると、名前が編集可能になります。
継承が物事を台無しにしている理由がわかりません。誰でも私を啓発できますか?