Example #1
0
        private void RemoveControl()
        {
            LayerContainer.Focus();
            LayerContainer.PreventMouseEvent(null);

            if (Popup)
            {
                _control.SaftyInvoke <Popup>(p => p.IsOpen = false);
            }
            else
            {
                if (_control == null)
                {
                    return;
                }
                var panel = this.FindAncestor <Panel>();
                if (panel == null || !panel.Children.Contains(_control))
                {
                    return;
                }

                panel.Children.Remove(_control);

                _control = null;
            }

            this.FindAncestor <Panel>().ReleaseMouseCapture();
        }
Example #2
0
 protected override void OnParentKeyUp(object sender, KeyEventArgs e)
 {
     if (_spaceKeyPressed)
     {
         LayerContainer.PreventMouseEvent(null);
         _spaceKeyPressed     = false;
         Cursor               = Cursors.Arrow;
         Mouse.OverrideCursor = Cursors.Arrow;
         ReleaseMouseCapture();
     }
 }
Example #3
0
        protected override void OnParentKeyDown(object sender, KeyEventArgs e)
        {
            _spaceKeyPressed = e.Key == Key.Space;
            e.Handled        = _spaceKeyPressed;

            if (_spaceKeyPressed && !LayerContainer.IsMouseCaptured)
            {
                LayerContainer.PreventMouseEvent(this);
                Cursor = _grabCursor;
                Mouse.Capture(LayerContainer, CaptureMode.SubTree);
            }
        }
Example #4
0
        protected override void OnParentTextInput(TextCompositionEventArgs e)
        {
            var text = e.Text;

            if (e.OriginalSource != LayerContainer)
            {
                return;
            }

            //Popup专用
            if (text == "\r" || !Popup)
            {
                return;
            }

            ScrollToInitalDrawLocation();

            _editCell = InitalDrawLocation;

            if (_control != null)
            {
                _control.SaftyInvoke <Popup>(o =>
                {
                    //xLocateControl(InitalDrawLocation, true);
                    o.IsOpen = true;
                    RaiseTextInput(text);
                    LayerContainer.PreventMouseEvent(this);
                });
                return;
            }

            var panel = this.FindAncestor <Panel>();

            RenderControl(panel); // panel might be the Grid
            LocateControl(InitalDrawLocation, true);

            _control.SaftyInvoke <Popup>(c =>
            {
                EventHandler openedEventHandler = delegate
                {
                    RaiseTextInput(text);
                    LayerContainer.PreventMouseEvent(this);
                };
                c.Opened += openedEventHandler;
                c.Closed += delegate
                {
                    c.Opened -= openedEventHandler;
                };
                c.IsOpen = true;
            });
            Mouse.Capture(panel, CaptureMode.SubTree);
        }
Example #5
0
        private void BeginEdit(RoutedEventArgs e)
        {
            _editCell = InitalDrawLocation;

            ScrollToInitalDrawLocation();

            var panel = this.FindAncestor <Panel>();

            if (panel.IsMouseCaptured) // 当编辑格控件已打开,自动将焦点移至编辑控件
            {
                GetInnerControl().SaftyInvoke(c => Keyboard.Focus(c));
                return;
            }
            RenderControl(panel); // panel might be the Grid
            LocateControl(InitalDrawLocation, true);

            if (Popup)
            {
                _control.SaftyInvoke <Popup>(c =>
                {
                    if (!c.IsLoaded)
                    {
                        c.Opened += delegate
                        {
                            OnInnerChildLoaed(e);
                            LayerContainer.PreventMouseEvent(this);
                        }
                    }
                    ;
                    c.IsOpen = true;
                });
            }
            else
            {
                _control.SaftyInvoke(c =>
                {
                    c.Loaded += delegate
                    {
                        OnInnerChildLoaed(e);
                    };
                });
            }
            Mouse.Capture(panel, CaptureMode.SubTree);
        }