bool possoCambiareStatus(DataEntryStatus nuovoStatus) { bool posso = false; if (nuovoStatus == status) { return(false); // Che senso ha ?? esco subito. } switch (nuovoStatus) { case DataEntryStatus.New: posso = status == DataEntryStatus.View; break; case DataEntryStatus.Edit: posso = collectionView.CurrentItem != null && status == DataEntryStatus.View; break; case DataEntryStatus.Delete: posso = collectionView.CurrentItem != null && collectionView.CanRemove && status == DataEntryStatus.View; break; case DataEntryStatus.View: posso = true; break; } return(posso); }
void cambiareStatus(DataEntryStatus nuovoStatus) { if (!possoCambiareStatus(nuovoStatus)) { throw new ArgumentException("nuovo stato incompatibile: " + nuovoStatus); } // Eseguo! switch (nuovoStatus) { case DataEntryStatus.View: if (collectionView.IsEditingItem && collectionView.CanCancelEdit) { collectionView.CancelEdit(); } if (collectionView.IsAddingNew) { collectionView.CancelNew(); } break; case DataEntryStatus.Edit: passoPreparaEdit(entitaCorrente); collectionView.EditItem(entitaCorrente); break; case DataEntryStatus.New: System.Diagnostics.Debug.Assert(collectionView.CanAddNew); TEntity nuova = (TEntity)collectionView.AddNew(); passoPreparaAddNew(nuova); // Purtroppo i campi che sono a video non si rinfrescano con i valori di default. // Per ovviare, mi devo spostare e poi ritornare sul nuovo record. collectionView.MoveCurrentToFirst(); collectionView.MoveCurrentTo(nuova); break; case DataEntryStatus.Delete: cancella(entitaCorrente); nuovoStatus = DataEntryStatus.View; break; } status = nuovoStatus; }
bool possoCambiareStatus(string nomeNuovoStatus) { DataEntryStatus nuovoStatus = (DataEntryStatus)Enum.Parse(typeof(DataEntryStatus), nomeNuovoStatus); return(possoCambiareStatus(nuovoStatus)); }
void cambiareStatus(string nomeNuovoStato) { DataEntryStatus nuovoStatus = (DataEntryStatus)Enum.Parse(typeof(DataEntryStatus), nomeNuovoStato); cambiareStatus(nuovoStatus); }