public InventoryDataGrid() { InitializeComponent(); CollectionViewModelObserverSubject subject = CollectionViewModelObserverSubject.GetInstance(); _viewModel = new InventoryWrapperViewModel(subject); _viewModel.NewItemAddHandler += OnNewItemAdditionHandlerCallback; _viewModel.SelectedItemModifyHandler += OnSelectedItemModifyHandlerCallback; DataContext = _viewModel; }
/// <summary> /// 기존의 Inventory 데이터를 수정하고자 할 생성자 /// </summary> /// <param name="viewModel"></param> /// <param name="inventoryWrapper">수정하고자할 inventory 래핑 클래스</param> public InventoryWrapperEditorViewModel(InventoryWrapperViewModel viewModel, InventoryWrapper inventoryWrapper) : base(inventoryWrapper) { if (inventoryWrapper == null) throw new ArgumentNullException(); _viewModel = viewModel; _target = inventoryWrapper; Specification = inventoryWrapper.Specification; Item = inventoryWrapper.Item; Warehouse = inventoryWrapper.Warehouse; ItemList = new ItemWrapper[] { Item }; SpecificationList = new SpecificationWrapper[] { Specification }; WarehouseList = FieldWrapperDirector.GetInstance().CreateCollection<Warehouse, Observable<Warehouse>>().Where(x => !x.IsDeleted); }
/// <summary> /// 새로운 Inventory 데이터를 추가하고자 할 생성자 /// </summary> /// <param name="viewModel"></param> public InventoryWrapperEditorViewModel(InventoryWrapperViewModel viewModel) : base() { _viewModel = viewModel; FieldWrapperDirector fwd = FieldWrapperDirector.GetInstance(); InventoryWrapperDirector iwd = InventoryWrapperDirector.GetInstance(); //아직 Inventory 데이터가 없는 Item(With Specification) 데이터의 리스트를 구한다. IEnumerable<SpecificationWrapper> specifications = fwd.CreateCollection<Specification, SpecificationWrapper>().Where(x => !x.IsDeleted); List<ItemWrapper> itemWrapperList = new List<ItemWrapper>(); foreach (SpecificationWrapper specification in specifications) { if (iwd.SearchAsSpecificationKey(specification.ID) == null) { ItemWrapper itemw = fwd.BinSearch<Item, ItemWrapper>(specification.Field.ItemID); if (itemw != null && !itemw.IsDeleted) itemWrapperList.Add(itemw); } } ItemList = itemWrapperList.Distinct(); //겹치는 데이터를 제거하여 ItemList에 대입 WarehouseList = fwd.CreateCollection<Warehouse, Observable<Warehouse>>().Where(x => !x.IsDeleted); }