Exemplo n.º 1
0
            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);
            }
Exemplo n.º 2
0
            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));
            }
Exemplo n.º 3
0
            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();
            }