/// <summary> /// 在原始的医嘱对象列表发生改变后调用此事件,以同步医嘱视图列表 /// </summary> /// <param name="e"></param> /// <param name="actualIndex"></param> internal void AfterListChanged(ListChangedEventArgs e) { //// 重新生成满足当前设置的医嘱对象列表 //ResetInnerList(); // --e中的Index是基于InnerList的,所以在处理原始列表时要进行转换处理 //int actualIndex; // 同步医嘱视图列表 switch (e.ListChangedType) { case ListChangedType.ItemAdded: OrderList[e.NewIndex].Added(); // 需要手工设置新加入医嘱对象的状态 _maxSerialNo++; OrderViewList.Insert(e.NewIndex, new OrderView(OrderList[e.NewIndex])); break; case ListChangedType.ItemChanged: // 更新原位置对应的医嘱视图内容 OrderViewList[e.NewIndex].ResetProperties(); break; case ListChangedType.ItemDeleted: for (int index = OrderViewList.Count - 1; index >= 0; index--) { // 视图对应的医嘱在医嘱列表中不存在,则删除 if (OrderList.IndexOf(OrderViewList[index].OrderCache) < 0) { OrderViewList.RemoveAt(index); } } break; case ListChangedType.ItemMoved: case ListChangedType.Reset: ResetViewList(); break; default: throw new ArgumentOutOfRangeException(); } }