Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public PageViewModel(WidgetContainer container)
 {
     Container = container;
 }
Exemplo n.º 3
0
        protected void Init()
        {
            LayoutRoot.DataContext = this;
            Loaded += (sender, e) => OnLoaded();
            SizeChanged += (sender, e) => Rearrange.Postpone();
            MouseMove += (sender, e) => OnMouseMove(sender,e);

            XUnit = 50;
            YUnit = 50;

            Rearrange.Action = () =>
            {
                var map = GetMap();

                foreach (var container in Pages.Select(p => p.Container))
                    map.Add_New_Page(container);

                var combos = Pages.Select(p => p.Container).SelectMany(c => c.Widgets.Select(w => new { c, w })).ToList();
                foreach (var wc in combos)
                {
                    var container = wc.c;
                    var widget = wc.w;

                    var spot = map.FindArea((int)widget.DMaxWidth(XUnit), (int)widget.DMaxHeight(YUnit));
                    if (spot == null)
                    {
                        var toBePlaced = new WidgetContainer();
                        Pages.Add(new PageViewModel(toBePlaced));
                        MainGrid.Children.Add(toBePlaced);
                        map.Add_New_Page(toBePlaced);
                        spot = map.FindArea((int)widget.DMaxWidth(XUnit), (int)widget.DMaxHeight(YUnit));
                    }

                    container.Remove_WidgetItemContainer(widget);
                    ((WidgetContainer)spot.Page).Add_WidgetItemContainer(widget);

                    Canvas.SetTop(widget, spot.Y * YUnit);
                    Canvas.SetLeft(widget, spot.X * XUnit);

                    map.Set_MaxBusy(widget, XUnit, YUnit, spot.Page);
                }

                foreach (var page in Pages.Where(p=> !p.Container.Widgets.Any()).ToList())
                    Pages.Remove(page);
                Pages.First().Container.Visibility = Visibility.Visible;
            };
        }