public void Add_WidgetItemContainer(WidgetItemContainer container) { Canvas.Children.Add(container); Widgets.Add(container); }
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); } }
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); } }
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); }
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); }