Ejemplo n.º 1
0
        public void DetectPositionPoints()
        {
            DependencyObject parent = VisualTreeHelper.GetParent(this);

            while (!(parent is Grid))
            {
                if (parent == null)
                {
                    dispatcherTimer.Stop();
                    return;
                }
                parent = VisualTreeHelper.GetParent(parent);
            }
            Point position = this.TranslatePoint(new Point(1, 1), (FrameworkElement)parent);

            //If the focus has not changed position
            if (OldPoint != null && OldPoint == position)
            {
                return;
            }
            OldPoint = position;
            Model.Focus model = this.DataContext as Model.Focus;
            model.setPoints(new Point(position.X + (this.RenderSize.Width / 2), position.Y + 40),
                            new Point(position.X + (this.RenderSize.Width / 2), position.Y + (this.RenderSize.Height)),
                            new Point(position.X, position.Y + (this.RenderSize.Height / 2)),
                            new Point(position.X + (this.RenderSize.Width), position.Y + (this.RenderSize.Height / 2)));
            ((FocusGridModel)((FrameworkElement)parent).DataContext).UpdateFocus(model);
        }
        public AddFocusViewModel SetupFlyout(object sender)
        {
            Point mousePos = Mouse.GetPosition((IInputElement)sender);

            Model.Focus focus = new Model.Focus();
            focus.setDefaults();
            Focus = focus;
            //minus 0.4 because if you hit the border of a cell, it will add it to the next one... Annoying
            Focus.X = (int)Math.Floor((mousePos.X / 89) - 0.4);
            Focus.Y = (int)Math.Floor(mousePos.Y / 140);
            RaisePropertyChanged("Focus");
            return(this);
        }