internal FrameworkElement GetAnchorElement(Column col) { GridPanel columnHeaders = _flex.ColumnHeaders; int row = columnHeaders.Rows.Count - 1; FrameworkElement frameworkElement = columnHeaders.GetCellElement(new CellRange(row, col.Index)); if (frameworkElement == null) { foreach (object current in columnHeaders.Children) { Border border = current as Border; if (border != null) { CellRange cellRange = new CellRange(border); if (cellRange.ContainsColumn(col.Index) && cellRange.ContainsRow(row)) { frameworkElement = border; break; } } } } return frameworkElement; }
public void Select(int row, int col, int row2, int col2, bool scrollIntoView) { CellRange cellRange = _sel; CellRange cellRange1 = new CellRange(row, col, row2, col2); cellRange1 = AdjustSelection(cellRange1, false); if (cellRange1 == _sel) { if (scrollIntoView) { _grid.ScrollIntoView(cellRange1.Row, cellRange1.Column); } return; } CellRangeEventArgs cellRangeEventArg = new CellRangeEventArgs(_grid.Cells, cellRange1); _grid.OnSelectionChanging(cellRangeEventArg); if (cellRangeEventArg.Cancel) { return; } if (_grid.ActiveEditor != null) { return; } cellRange1.Row = Math.Min(cellRange1.Row, _grid.Rows.Count - 1); cellRange1.Row2 = Math.Min(cellRange1.Row2, _grid.Rows.Count - 1); _sel = cellRange1; if (_grid.SelectionMode == SelectionMode.ListBox) { RowCollection rows = _grid.Rows; for (int i = 0; i < rows.Count; i++) { rows[i].SetFlag(RowColFlags.Selected, cellRange1.ContainsRow(i)); } } _grid.UpdateSelectedItems(false); if (scrollIntoView) { _grid.ScrollIntoView(cellRange1.Row, cellRange1.Column); } foreach (CellRange key in GetRangeDelta(cellRange, cellRange1).Keys) { UpdateRangeBrushes(key); } if (_grid.ColumnHeaderSelectedBackground != null) { UpdateHeaderBackground(true); } if (_grid.RowHeaderSelectedBackground != null) { UpdateHeaderBackground(false); } _grid.UpdateMarquee(); _grid.OnSelectionChanged(cellRangeEventArg); }