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; } }