Exemplo n.º 1
0
        protected void ClickOn(T operationElement, ClickStatus clickStatus)
        {
            Debug.Assert(operationElement != null);

            //0. 焦点
            var operationElementIndex = IndexOf(operationElement);
            var lastFocus             = Focus;
            var lastFocusElement      = this.ElementAtOrDefault(lastFocus);

            //1. 仅仅右键按下
            if (clickStatus.IsRightMouseButtonClicked && !clickStatus.IsLeftMouseButtonClicked)
            {
                if (clickStatus.IsCtrlPressed && !clickStatus.IsShiftPressed)
                {
                    return;                                                           //仅仅ctrl按下, 不改变选中状态
                }
                if (operationElement.IsSelected)
                {
                    return;                              //作用在选中的cell上,不改变选中状态
                }
                //operationCell未选中                               //作用在未选中的cell上,仅仅选中该cell
                SelectOnly(operationElement);
                return;
            }

            //2. 有左键按下


            //2.1 ctrl+shift按下
            if (clickStatus.IsShiftPressed && clickStatus.IsCtrlPressed)
            {
                //todo: 扩展到Card范围
                SelectRange(lastFocus, operationElementIndex, lastFocusElement != null && lastFocusElement.IsSelected);
            }
            //2.2 仅仅 ctrl 按下
            else if (clickStatus.IsShiftPressed)
            {
                ForEach(cell => cell.IsSelected = false);
                SelectRange(lastFocus, operationElementIndex, true);
            }
            //2.3 仅仅 ctrl 按下
            else if (clickStatus.IsCtrlPressed)
            {
                operationElement.IsSelected = !operationElement.IsSelected;
                Focus = operationElementIndex;
            }
            //2.4 没有modifier key 按下
            else
            {
                SelectOnly(operationElement);
            }
        }
Exemplo n.º 2
0
 public ClickStatusEventArgs(ClickStatus clickStatus)
 {
     ClickStatus = clickStatus;
 }