检查IList已更改?

时间:2011-06-14 18:39:27

标签: c#

我正在尝试使用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 个答案:

答案 0 :(得分:4)

听起来像是ObservableCollection的工作。

这让我们订阅事件并告诉我们集合的变化方式。

答案 1 :(得分:0)

我能想到一些事情。

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

答案 2 :(得分:0)

您可以像其他人一样使用和ObservableCollection,或者您可以进行一些封装,并且不能提供对私人会员的完全访问

如果Add是通过您提供的单一公共方法完成的,那么您将始终知道该类用户何时添加约会并采取相应行动。