public bool IsCurrent(GridCell gridCell) { var index = VerifyGridCell(gridCell, nameof(gridCell)); if (!gridCell.IsKeyboardFocusWithin && DataPresenter.View.IsKeyboardFocusWithin) // Another element in DataView has keyboard focus { return(false); } return(CurrentBindingIndex == index && gridCell.GetRowPresenter() == CurrentRow); }
public bool IsSelected(GridCell gridCell) { if (DataPresenter.SelectedRows.Count > 0) { return(gridCell.GetRowPresenter().IsSelected); } if (Mode == GridCellMode.Edit) { return(SelectFullRowInEditMode && gridCell.GetRowPresenter().IsCurrent); } if (CurrentBindingIndex < 0) { return(false); } var bindingIndex = VerifyGridCell(gridCell, nameof(gridCell)); return(IsBindingSelected(bindingIndex) && IsRowSelected(gridCell.GetRowPresenter().Index)); }
public void Select(GridCell gridCell, bool isExtended) { if (Mode != GridCellMode.Select) { throw new InvalidOperationException(DiagnosticMessages.GridCell_Presenter_SelectionNotAllowedInEditMode); } var bindingIndex = VerifyGridCell(gridCell, nameof(gridCell)); SuspendInvalidateView(); DeselectAllRows(); if (CurrentBindingIndex == -1) { CurrentBindingIndex = bindingIndex; } if (isExtended) { _extendedBindingSelection += CurrentBindingIndex - bindingIndex; _extendedRowSelection += CurrentRow.Index - gridCell.GetRowPresenter().Index; } else { ClearExtendedSelection(); } if (!gridCell.IsKeyboardFocusWithin) { _isExtendedSelectionLocked = true; try { gridCell.Focus(); } finally { _isExtendedSelectionLocked = false; } } Debug.Assert(CurrentBindingIndex == bindingIndex); InvalidateView(); ResumeInvalidateView(); }