void OnUpdate(object sender, ListModelEventArgs <DataModelType> e)
        {
            if (CanUpdateList())
            {
                var itemsFromModel = _model.GetItems().ToList();

                //добавляем те элементы, которые были добавленны в процессе редактирования
                var addedItems = addedAndDelatedItems.Where(itm => itm.Value == ChangeStatus.Add).Select(itm => itm.Key).ToList();
                itemsFromModel.AddRange(addedItems);

                //удаляем элементы, которые были удалены, чтобы они не отображались
                var deletedItems = addedAndDelatedItems.Where(itm => itm.Value == ChangeStatus.Delete).Select(itm => itm.Key).ToList();
                foreach (var delItem in deletedItems)
                {
                    itemsFromModel.Remove(delItem);
                }

                var newItemViewModels = GetItemViewModels(itemsFromModel);
                UpdateList(newItemViewModels);
            }
        }
        public ListViewModel(IListModel <DataModelType> model,
                             IViewModelCreator <DataModelType, DataViewModelType, DataDetailViewModelType> creator,
                             IItemModelAdapterCreator <DataModelType> itemModelCreator)
        {
            if (creator == null)
            {
                throw new ArgumentNullException("creator can't be null");
            }
            _creator = creator;

            if (itemModelCreator == null)
            {
                throw new ArgumentNullException("itemModelCreator can't be null");
            }
            _itemModelCreator = itemModelCreator;

            if (model == null)
            {
                throw new ArgumentNullException("model can't be null");
            }

            _model          = model;
            _model.Updated += OnUpdate;
            var itemViewModels = GetItemViewModels(_model.GetItems());

            UpdateList(itemViewModels);

            AddItemCommand    = new AddItemCommand <DataModelType, DataViewModelType, DataDetailViewModelType>(this);
            DeleteItemCommand = new DeleteItemCommand <DataModelType, DataViewModelType, DataDetailViewModelType>(this);
            EditListCommand   = new EditListCommand <DataModelType, DataViewModelType, DataDetailViewModelType>(this);
            SaveListCommand   = new SaveListCommand <DataModelType, DataViewModelType, DataDetailViewModelType>(this);
            SelectItemCommand = new SelectItemCommand <DataModelType, DataViewModelType, DataDetailViewModelType>(this);
            UpdateListCommand = new UpdateListCommand <DataModelType, DataViewModelType, DataDetailViewModelType>(this);

            addedAndDelatedItems = new Dictionary <IItemModelAdapter <DataModelType>, ChangeStatus>();

            IsSaved = true;
        }