Exemple #1
0
 public void Add_WidgetItemContainer(WidgetItemContainer container)
 {
     Canvas.Children.Add(container);
     Widgets.Add(container);
 }
Exemple #2
0
 public void Remove_WidgetItemContainer(WidgetItemContainer container)
 {
     Canvas.Children.Remove(container);
     Widgets.Remove(container);
 }
 protected bool IsInside(WidgetItemContainer item, MouseButtonEventArgs e)
 {
     var relative = e.GetPosition(item);
     return relative.X > 0 && relative.Y > 0 && relative.X < item.ActualWidth && relative.Y < item.ActualHeight;
 }
        private static void OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var items = e.NewValue as IEnumerable;
            var pagedContainer = d as PagedWidgetContainer;

            pagedContainer.MainGrid.Children.Clear();
            pagedContainer.Pages.Clear();

            var container = new WidgetContainer();
            foreach (var item in items)
            {
                var itemContainer = new WidgetItemContainer();
                itemContainer.DataContext = item;
                itemContainer.ContentTemplate = pagedContainer.ItemTemplate;
                itemContainer.Content = item;

                container.Add_WidgetItemContainer(itemContainer);
            }

            pagedContainer.Pages.Add(new PageViewModel( container));
            pagedContainer.MainGrid.Children.Add(container);
        }
        protected void Handle_Mouse_Up(MouseButtonEventArgs e)
        {
            if (Selected_Element == null)
                return;

            try
            {
                var point = e.GetPosition(this);
                VisualStateManager.GoToState(Selected_Element, "NotDragging", true);
                Selected_Element.ReleaseMouseCapture();

                if (Action == EditAction.Moving)
                {
                    Selected_Element.Traslate.X = 0;
                    Selected_Element.Traslate.Y = 0;

                    var x = point.X - MouseToElementRelativePosition.X;
                    var y = point.Y - MouseToElementRelativePosition.Y;

                    Move_Item(Selected_Element, new Point { X = x, Y = y });
                }

                if (Action == EditAction.Resizing)
                {
                    Selected_Element.Scale.ScaleX = 1;
                    Selected_Element.Scale.ScaleY = 1;

                    Resize_Item(Selected_Element, e.GetPosition(Selected_Element));
                }
            }
            finally
            {
                Selected_Element = null;
                Action = EditAction.None;
            }
        }
        protected void Handle_Mouse_Down(MouseButtonEventArgs e)
        {
            if (e.ClickCount > 1)
                return;

            e.Handled = true;
            var position = e.GetPosition(this);
            var elements = VisualTreeHelper.FindElementsInHostCoordinates(position, this);

            var itemContainer = elements.OfType<WidgetItemContainer>().FirstOrDefault();
            if (itemContainer == null)
                itemContainer = GetWidgets().Where(w => IsInside(w, e)).FirstOrDefault();
            if (itemContainer == null)
                return;

            Selected_Element = itemContainer;

            OriginalPosition = e.GetPosition(this);
            MouseToElementRelativePosition = e.GetPosition(itemContainer);

            Selected_Element.CaptureMouse();

            Bring_To_Front(itemContainer);

            if (elements.OfType<Grid>().Any(i => i.Name == "resizeAncor"))
            {
                Action = EditAction.Resizing;
                VisualStateManager.GoToState(Selected_Element, "Dragging", true);
            }
            else
            {
                Action = EditAction.Moving;
                VisualStateManager.GoToState(Selected_Element, "Dragging", true);
            }
        }
Exemple #7
0
        private static void OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var items = e.NewValue as IEnumerable;
            var widgets = d as WidgetBoard;

            foreach (var item in items)
            {
                var container = new WidgetItemContainer();
                container.DataContext = item;
                container.ContentTemplate = widgets.ItemTemplate;
                container.Content = item;

                widgets.Add_WidgetItemContainer(container);
            }
        }
Exemple #8
0
        public void Remove_WidgetItemContainer(WidgetItemContainer container)
        {
            var handler = Handlers[container];
            container.RemoveHandler(UserControl.MouseLeftButtonUpEvent, handler);
            Handlers.Remove(container);

            Canvas.Children.Remove(container);
            Widgets.Remove(container);
        }
Exemple #9
0
        public void Add_WidgetItemContainer(WidgetItemContainer container)
        {
            var handler = new MouseButtonEventHandler(SnapGrid_MouseLeftButtonUp);
            Handlers[container] = handler;

            container.AddHandler(UserControl.MouseLeftButtonUpEvent, handler, true);

            //container.ContentTemplate = ItemTemplate;

            //container.SizeChanged += (from, ev) =>
            //{
            //    container.Measure(maxSize);
            //    container.Width = widgets.Calculate_Discrete_X(container.DesiredSize.Width);
            //    container.Height = widgets.Calculate_Discrete_X(container.DesiredSize.Height);
            //};

            Canvas.Children.Add(container);
            Widgets.Add(container);
        }