Exemple #1
0
        public void SelectRowsByRange(Double startY, Double endY)
        {
            if (mainPageViewModel.ExplorationViewModel.SelectedPageViews.Count == 0)
            {
                return;
            }

            PageView      topPageView      = mainPageViewModel.ExplorationViewModel.SelectedPageViews.Last();
            PageViewModel topPageViewModel = topPageView.ViewModel;

            Double rowHeight = Const.RowHeight;

            //startY = Math.Floor(startY / rowHeight) * rowHeight;
            //endY = Math.Ceiling(endY / rowHeight) * rowHeight;

            startY -= rowHeight / 2; // row의 중앙을 기준으로 테스트 하기 위함임
            endY   -= rowHeight / 2;

            if (State == TableViewState.AllRow)
            {
                IEnumerable <Row> filteredRows = SheetViewModel.FilteredRows;
                IEnumerable <Row> selectedRows = allRowViewModels.Where(rvm => filteredRows.Contains(rvm.Row) && startY <= rvm.Y && rvm.Y < endY).Select(rvm => rvm.Row);
                topPageView.SelectionChanged(null, selectedRows, SelectionChangedType.Replace);
            }
            else if (State == TableViewState.GroupedRow)
            {
                IEnumerable <Row> selectedRows = groupedRowViewModels.Where(rvm => startY <= rvm.Y && rvm.Y < endY).SelectMany(rvm => rvm.Rows);
                topPageView.SelectionChanged(null, selectedRows, SelectionChangedType.Replace);
            }
            else if (State == TableViewState.SelectedRow)
            {
                IEnumerable <Row> filteredRows = SheetViewModel.FilteredRows;
                IEnumerable <Row> selectedRows = allRowViewModels.Where(rvm => filteredRows.Contains(rvm.Row) && startY <= rvm.Y && rvm.Y < endY).Select(rvm => rvm.Row);
                topPageView.SelectionChanged(null, selectedRows, SelectionChangedType.Replace);
            }
            else
            {
                return;
            }
        }