public HrListViewModel(IHrsHolder holder, ISession session, HrViewColumn sorting = HrViewColumn.Ord, HrViewColumn grouping = HrViewColumn.Category) { Contract.Requires(holder != null); Contract.Requires(session != null); this.session = session; this.holder = holder; HolderVm = new HolderViewModel(holder); doNotNotifyLastSelectedChanged = new FlagActionWrapper(() => { OnPropertyChanged(() => LastSelected); logger.DebugFormat("(bulk) selected in order\n{0}", string.Join("\n", selectedOrder)); }); preserveSelected = new FlagActionWrapper <IList <ShortHealthRecordViewModel> >((hrs) => { hrs.ForEach(vm => vm.IsSelected = true); // fix new selected item appears in listbox after movement hrs from diff categories in grouped by category // TODO fix when diff createdAt HealthRecords.Except(hrs).ForEach(x => x.IsSelected = false); }); handler = this.Subscribe(Event.NewSession, (e) => { var s = e.GetValue <ISession>(MessageKeys.Session); ReplaceSession(s); }); hrManager = new HealthRecordManager(holder, OnHrVmPropChanged); hrManager.DeletedHealthRecords.CollectionChangedWrapper += DeletedHrsCollectionChanged; hrManager.HealthRecords.CollectionChangedWrapper += HrsCollectionChanged; view = (ListCollectionView)CollectionViewSource.GetDefaultView(HealthRecords); DropHandler = new DropTargetHandler(this); DragHandler = new DragSourceHandler(); IsDragSourceEnabled = true; IsDropTargetEnabled = true; IsRectSelectEnabled = true; Grouping = grouping; Sorting = sorting; SetHrExtra(HealthRecords); }
public ShortHealthRecordViewModel(HealthRecord hr) { Contract.Requires(hr != null); this.healthRecord = hr; patient = hr.GetPatient(); patient.PropertyChanged += patient_PropertyChanged; healthRecord.PropertyChanged += healthRecord_PropertyChanged; healthRecord.ItemsChanged += healthRecord_ItemsChanged; SyncCheckedAndSelected = true; EventDate = EventDateViewModel.FromHr(healthRecord); EventDate.PropertyChanged += (s, e) => { OnPropertyChanged(() => EventDateString); }; DropHandler = new DropTargetHandler(this); IsDropTargetEnabled = true; }