示例#1
0
        public static void Finish()
        {
            if (TargetContext == null)
            {
                return; //Already finished.
            }
            HidePointer();

            TargetFrameworkPresenter.MouseMove  -= Context_MouseMove;
            TargetFrameworkPresenter.MouseLeave -= Context_MouseLeave;
            TargetFrameworkPresenter.MouseEnter -= Context_MouseEnter;

            TargetFrameworkPresenter.Cursor = PreviousCursor;
            VisualPointer      = null;
            TargetAdornerLayer = null;
            PreviousCursor     = null;
            TargetContext      = null;
        }
示例#2
0
        /// <summary>
        /// Starts a new pointing operation over the specified context control with the supplied decorator,
        /// plus indicating whether the decorator should be put closer of the specified cursor.
        /// </summary>
        public static void Start(IDocumentView Context, Drawing PointingDecorator, bool DecoratorCloser = false, Cursor PointingCursor = null)
        {
            if (TargetContext != null)
            {
                Finish();
            }

            TargetContext = Context;    // This works (but it should be determined the context container Window): Application.Current.MainWindow.Content as FrameworkElement;
            // this didn't work: TargetFrameworkPresenter = TargetContext.PresenterControl.GetNearestVisualDominantOfType<Window>();
            TargetFrameworkPresenter = TargetContext.PresenterControl;

            PreviousCursor = TargetFrameworkPresenter.Cursor;
            TargetFrameworkPresenter.Cursor = PointingCursor ?? Cursors.Arrow;
            TargetAdornerLayer = TargetContext.PresenterLayer;

            VisualPointer = new PointerAdorner(TargetContext, TargetFrameworkPresenter, PointingDecorator, DecoratorCloser);

            TargetFrameworkPresenter.MouseEnter += Context_MouseEnter;
            TargetFrameworkPresenter.MouseLeave += Context_MouseLeave;
            TargetFrameworkPresenter.MouseMove  += Context_MouseMove;

            ShowPointer();
        }