示例#1
0
 protected AddRemoveDetailEntitiesViewModel(IUnitOfWorkFactory <TUnitOfWork> unitOfWorkFactory, Func <TUnitOfWork, IRepository <TEntity, TPrimaryKey> > getRepositoryFunc, Func <TUnitOfWork, IRepository <TDetailEntity, TDetailPrimaryKey> > getDetailsRepositoryFunc, Func <TEntity, ICollection <TDetailEntity> > getDetailsFunc, TPrimaryKey id)
     : base(unitOfWorkFactory, getRepositoryFunc, null)
 {
     this.getDetailsRepositoryFunc = getDetailsRepositoryFunc;
     this.getDetailsFunc           = getDetailsFunc;
     SelectedEntities = new ObservableCollection <TDetailEntity>();
     if (this.IsInDesignMode())
     {
         return;
     }
     LoadEntityByKey(id);
     Messenger.Default.Register(this, (EntityMessage <TDetailEntity, TDetailPrimaryKey> m) =>
     {
         if (m.MessageType != EntityMessageType.Added)
         {
             return;
         }
         var withParent = m.Sender as ISupportParentViewModel;
         if (withParent == null || withParent.ParentViewModel != this)
         {
             return;
         }
         var withEntity   = m.Sender as SingleObjectViewModel <TDetailEntity, TDetailPrimaryKey, TUnitOfWork>;
         var detailEntity = DetailsRepository.Find(DetailsRepository.GetPrimaryKey(withEntity.Entity));
         if (detailEntity == null)
         {
             return;
         }
         DetailEntities.Add(detailEntity);
         SaveChangesAndNotify(new TDetailEntity[] { detailEntity });
     });
 }
示例#2
0
 public virtual void RemoveDetailEntities()
 {
     if (!SelectedEntities.Any())
     {
         return;
     }
     foreach (var selectedEntity in SelectedEntities)
     {
         DetailEntities.Remove(selectedEntity);
     }
     SaveChangesAndNotify(SelectedEntities);
     SelectedEntities.Clear();
 }
示例#3
0
        public virtual void AddDetailEntities()
        {
            var availalbleEntities      = DetailsRepository.ToList().Except(DetailEntities).ToArray();
            var selectEntitiesViewModel = new SelectDetailEntitiesViewModel <TDetailEntity>(availalbleEntities);

            if (DialogService.ShowDialog(MessageButton.OKCancel, CommonResources.AddRemoveDetailEntities_SelectObjects, selectEntitiesViewModel) == MessageResult.OK && selectEntitiesViewModel.SelectedEntities.Any())
            {
                foreach (var selectedEntity in selectEntitiesViewModel.SelectedEntities)
                {
                    DetailEntities.Add(selectedEntity);
                }
                SaveChangesAndNotify(selectEntitiesViewModel.SelectedEntities);
            }
        }
        public virtual void RemoveDetailEntities()
        {
            if (!SelectedEntities.Any())
            {
                return;
            }
            var entities = SelectedEntities.ToList();

            foreach (var e in entities)
            {
                SelectedEntities.Remove(e);
                DetailEntities.Remove(e);
            }
            SaveChangesAndNotify(entities);
            this.RaiseCanExecuteChanged(x => x.RemoveDetailEntities());
        }