检查 IList 是否发生了变化?

3
我正在尝试使用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;
        }
    }

我可以通知AppointmentBook控件,使用上述代码分配新列表,这样它就会重新绘制每个预约控件。
但是如果以下情况更改了预约列表,我该如何检查呢?
appointments.Add(NewAppointment);
3个回答

4
似乎需要用到ObservableCollection
这使我们能够订阅事件并告诉我们集合以何种方式改变。

1

你可以像其他人建议的那样使用ObservableCollection,也可以进行一些封装,并且不提供对私有成员的完全访问

如果通过你提供的单个公共方法来执行Add,你将始终知道类的用户何时添加约会并相应地采取行动。


0

我能想到几件事情。

  1. 为包含额外布尔值 changed 的 IList 创建一个包装类。
  2. 使用某个变量(例如布尔值),当您执行添加/删除/编辑操作时将其设置为 true,并在重新绘制后再次将其设置为 false。
  3. 保留您正在绘制的列表的副本(或仅保留存在的某些索引),并检查“传入”和“上次绘制”的列表是否相同
  4. 使用 ObservableCollection

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接