public void Remove(INoteDisplayedData obj) { var note = adapter.ConvertToNote(obj) as CustomerNote; dataProvider.Delete(note); reserve.Remove(note); Save(); }
/// <summary> /// Отображает выбранную запись в <see cref="NoteEditionPage"/> /// </summary> /// <param name="note"></param> private void DisplayNote(INoteDisplayedData note) { var page = new NoteEditionPage(note); page.ItemRemoved += Page_ItemRemoved; page.EndOfInput += HidePage; page.ItemCreated += Page_ItemCreated; AddNoteFrame.Navigate(page); }
public NoteEditionPage(INoteDisplayedData noteDisplayedData) : this() { isOnCreation = noteDisplayedData is null || noteDisplayedData.Name is null; this.noteDisplayedData = noteDisplayedData; DataContext = noteDisplayedData; if (isOnCreation == false) { noteDisplayedData.Date = ctrl.TimeToCorrectFormat(noteDisplayedData.Date); hourCB.SelectedItem = ctrl.InitTime(noteDisplayedData.Date.Hour); minuteCB.SelectedItem = ctrl.InitTime(noteDisplayedData.Date.Minute); } }
/// <summary> /// Обработка события со страницы - создание объекта /// </summary> /// <param name="obj"></param> private void Page_ItemCreated(INoteDisplayedData obj) { //если элемент был успешно добавлен запускаем внутренний таск var res = ctrl.Add(obj).ContinueWith(t => { Debug.WriteLine("в главном потоке меняет GUI"); //в главном потоке меняет GUI var innerTask = new Task(() => { mainWinData.Add(obj); HidePage(); }, TaskCreationOptions.AttachedToParent); innerTask.Start(uiContext); }, TaskContinuationOptions.NotOnFaulted); }
//SOLVE: make notificator //TODO: add DatePicker Template //TODO: потокобезопасность в MainWindowData //SOLVE: при addAsync кидается Exception - нужно, чтобы Task просто умирал /// <summary> /// Добавляет запись асинхронно /// </summary> /// <param name="obj"></param> /// <returns>Может вернуть Task.Status = Faulted, если возникла ошибка</returns> public async Task Add(INoteDisplayedData obj) { var note = adapter.ConvertToNote(obj) as CustomerNote; var addTask = dataProvider.AddAsync(note); await addTask.ContinueWith(t => { Notify(OnSuccessfulAdditionMessage); reserve.Add(note); Save(); }, TaskContinuationOptions.OnlyOnRanToCompletion); await addTask.ContinueWith(t => { Notify(OnAdditionExceptionMessage); throw t.Exception.InnerException; }, TaskContinuationOptions.OnlyOnFaulted); }
public NoteItem(INoteDisplayedData noteDisplayedData) : this() { DataContext = NoteData = noteDisplayedData; }
/// <summary> /// Обработка события со страницы - удаление объекта /// </summary> /// <param name="obj"></param> private void Page_ItemRemoved(INoteDisplayedData obj) { mainWinData.Remove(obj); ctrl.Remove(obj); }
public INote ConvertToNote(INoteDisplayedData displayedData) => new CustomerNote(displayedData.Name, displayedData.Phone, displayedData.Date);