Beispiel #1
0
        /// <summary>
        /// Used for chained subscriptions sample:
        /// source.ObservePropertyChangedWithValue(x => x.Collection, true)
        ///       .ItemPropertyChanged(x => x.Name)
        /// </summary>
        /// <typeparam name="TItem"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="source"></param>
        /// <param name="property"></param>
        /// <returns></returns>
        public static IObservable <EventPattern <ItemPropertyChangedEventArgs <TItem, TProperty> > > ItemPropertyChanged <TItem, TProperty>(
            this IObservable <EventPattern <PropertyChangedAndValueEventArgs <ReadOnlyObservableCollection <TItem> > > > source,
            Expression <Func <TItem, TProperty> > property)
            where TItem : class, INotifyPropertyChanged
        {
            var observable = new ItemsObservable <ReadOnlyObservableCollection <TItem>, TItem, TProperty>(source, property);

            return(observable);
        }
        protected override async void OnDeleteItem(object commandParameter)
        {
            ValidationErrors = null;
            if (SelectedItem != null && SelectedItemIndex.HasValue)
            {
                try
                {
                    await _studentService.Delete(SelectedItem.Student.Id);

                    Students.RemoveAt(SelectedItemIndex.Value);
                    ItemsObservable.Remove(SelectedItem);
                }
                catch (ValidationPropertyException vpe)
                {
                    ValidationErrors = vpe.ErrorsList.ToList();
                }
                catch (ValidationException ve)
                {
                    ValidationErrors = ve.Errors.ToList();
                }
            }
        }