0

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 を個別のインターフェイスとして作成すると、名前が編集可能になります。

継承が物事を台無しにしている理由がわかりません。誰でも私を啓発できますか?

4

0 に答える 0