检查IList是否已更改?

问题描述

| 我试图用C#在Silverlight中创建一个约会簿,所以我将有一个
AppointmentBook
控件,并带有以下存储每个
Appointment
控件的方法
    List<kAppointment> appointments = null;

    public IList<kAppointment> Appointments
    {
        get
        {
            if (appointments == null)
            {
                appointments = new List<kAppointment>();
            }

            // Can notify something change here,return appointments;
        }
    }
我可以通知分配有上述代码的“ 0”控件新列表,因此它将重绘每个约会控件。 但是,如果约会列表被以下内容更改,该如何检查呢?
appointments.Add(NewAppointment);
    

解决方法

        听起来像是ObservableCollection的工作。 这使我们可以订阅事件,并告诉我们集合的更改方式。     ,        您可以像其他人建议的那样使用和
ObservableCollection
,或者可以做一些封装而不提供对私有成员的完全访问权限。 如果通过您提供的单个公共方法完成“ 6”,您将始终知道班级的用户何时添加约会并采取相应的行动。     ,        我可以想到几件事。 为IList创建一个包装器类,其中包含一个额外的布尔值更改。 使用一些在执行添加/删除/编辑操作时为true的变量(例如,布尔值),并在进行重绘时再次使其为false。 保留您正在绘制的列表的副本(或仅保留存在的某些索引),并检查“传入”和“最后绘制”列表是否相同 使用一个ObservableCollection