public void PreviewColumn(ColumnViewModel columnViewModel) { mainPageViewModel.TableViewModel.SkipAllAnimationToFill(); previewingColumnViewModel = columnViewModel; if (ViewStatus.SelectedColumnViewModels.IndexOf(previewingColumnViewModel) >= 0) { return; } // 현재 선택된 view status를 가져옴 ViewStatus selectedViewStatus = ViewStatus.Clone(); // 새 컬럼 추가 selectedViewStatus.SelectedColumnViewModels.Add(columnViewModel); selectedViewStatus.Refresh(); // 현재 추가된 컬럼으로 groupedRows와 GroupedRowViewModels를 만듦. selectedViewStatus.Generate(mainPageViewModel.SheetViewModel); // 탑 페이지 뷰 모델 가져와서 PageViewModel pageViewModel = TopPageView.ViewModel; // 복제한 view status를 추가 한 다음 pageViewModel.ViewStatus = selectedViewStatus; pageViewModel.State = PageViewModel.PageViewState.Previewing; // 이걸로 pageView를 채움 pageViewModel.Reflect(ReflectReason.Preview); // ReflectType2.TrackPreviousParagraph | ReflectType2.OnCreate, ReflectReason2.PreviewRequested); TopPageView.ReflectState(); ExpandFilters(); }
SelectionChangedEventHandler CreateColumnChangedHandler(ColumnViewModel currentColumnViewModel, AggregativeFunction.BaseAggregation defaultAggregativeFunction) { return(new SelectionChangedEventHandler((sender, args) => { ComboBox comboBox = sender as ComboBox; String selectedName = (comboBox.SelectedItem as ComboBoxItem).Content.ToString(); ColumnViewModel selectedColumnViewModel = mainPageViewModel.SheetViewModel.ColumnViewModels.First(cvm => cvm.Name == selectedName); // selectedColumnViewModel로 이제 바꾸면 됨. 이 과정에 대해서는 explorationViewModel의 PageViewTapped를 참고하면 좋다. Logger.Instance.Log($"column changed,{currentColumnViewModel.Column.Name},{selectedColumnViewModel.Column.Name}"); // 1. 컬럼의 상태 변경 if (selectedColumnViewModel.IsSelected) { Int32 index1 = ViewStatus.SelectedColumnViewModels.FindIndex(cvm => cvm == currentColumnViewModel); Int32 index2 = ViewStatus.SelectedColumnViewModels.FindIndex(cvm => cvm == selectedColumnViewModel); ViewStatus.SelectedColumnViewModels[index1] = selectedColumnViewModel; ViewStatus.SelectedColumnViewModels[index2] = currentColumnViewModel; ViewStatus.Refresh(); } else { currentColumnViewModel.IsSelected = false; selectedColumnViewModel.IsSelected = true; Int32 index = ViewStatus.SelectedColumnViewModels.FindIndex(cvm => cvm == currentColumnViewModel); ViewStatus.SelectedColumnViewModels[index] = selectedColumnViewModel; ViewStatus.Refresh(); } if (selectedColumnViewModel.Type == ColumnType.Numerical && defaultAggregativeFunction != null) { selectedColumnViewModel.AggregativeFunction = defaultAggregativeFunction; } mainPageViewModel.ReflectAll(ReflectReason.ColumnChanged); // 2.ColumnViewModelChanged); })); }