我试图模仿 ListView 和其他控件处理 SelectedItems 集合的方式。我有一个包含项目集合的类,每个项目都有一个 Selected 属性。
我想模仿 Item 可以更改其自己的 Selected 属性的智能行为,并且这样做会在父类中引发 SelectedItemsChanged 事件,并且 SelectedItems 集合现在应该反映更改。
我正在尝试实现一个 SelectedItemsCollection 类,它不包含内部列表,而是检查主 Items 列表中每个项目的 Selected 状态。这样它就不需要不断地更新和与主列表同步。
我正在查看 ListView.SelectedListViewItemCollection 的元数据,它具有以下声明:
public class SelectedListViewItemCollection : IList, ICollection, IEnumerable
它没有实现Add、Remove、RemoveAt等,这不违反IList接口的使用规则吗?如果不实现它们,我就无法编译。这只是元数据创建方式的一个小故障吗?
我应该如何去模拟这个功能?