示例#1
0
文件: Tiler.cs 项目: th851dan/Savablz
        public static void Tile(IEnumerable <DragablzItem> dragablzItems, Size bounds)
        {
            if (dragablzItems == null)
            {
                throw new ArgumentNullException("dragablzItems");
            }

            var items = new Queue <DragablzItem>(dragablzItems.OrderBy(Panel.GetZIndex));

            var cellCountPerColumn = TilerCalculator.GetCellCountPerColumn(items.Count());
            var x         = 0d;
            var cellWidth = bounds.Width / cellCountPerColumn.Length;

            foreach (var cellCount in cellCountPerColumn)
            {
                var y          = 0d;
                var cellHeight = bounds.Height / cellCount;
                for (var cell = 0; cell < cellCount; cell++)
                {
                    var item = items.Dequeue();
                    Layout.SetFloatingItemState(item, WindowState.Normal);
                    item.SetCurrentValue(DragablzItem.XProperty, x);
                    item.SetCurrentValue(DragablzItem.YProperty, y);
                    item.SetCurrentValue(FrameworkElement.WidthProperty, cellWidth);
                    item.SetCurrentValue(FrameworkElement.HeightProperty, cellHeight);

                    y += cellHeight;
                }

                x += cellWidth;
            }
        }
        public void Apply(DragablzItem dragablzItem)
        {
            if (dragablzItem == null)
            {
                throw new ArgumentNullException(nameof(dragablzItem));
            }

            dragablzItem.SetCurrentValue(DragablzItem.XProperty, Location.Left);
            dragablzItem.SetCurrentValue(DragablzItem.YProperty, Location.Top);
            dragablzItem.SetCurrentValue(FrameworkElement.WidthProperty, Location.Width);
            dragablzItem.SetCurrentValue(FrameworkElement.HeightProperty, Location.Height);
            Layout.SetFloatingItemState(dragablzItem, State);
            Panel.SetZIndex(dragablzItem, ZIndex);
        }
示例#3
0
文件: Tiler.cs 项目: th851dan/Savablz
        public static void TileVertically(IEnumerable <DragablzItem> dragablzItems, Size bounds)
        {
            if (dragablzItems == null)
            {
                throw new ArgumentNullException("dragablzItems");
            }

            var items = dragablzItems.ToList();

            var y      = 0.0;
            var height = bounds.Height / items.Count;

            foreach (var dragablzItem in items)
            {
                Layout.SetFloatingItemState(dragablzItem, WindowState.Normal);
                dragablzItem.SetCurrentValue(DragablzItem.YProperty, y);
                dragablzItem.SetCurrentValue(DragablzItem.XProperty, 0d);
                y += height;
                dragablzItem.SetCurrentValue(FrameworkElement.HeightProperty, height);
                dragablzItem.SetCurrentValue(FrameworkElement.WidthProperty, bounds.Width);
            }
        }
示例#4
0
        public static void TileHorizontally(IEnumerable <DragablzItem> dragablzItems, Size bounds)
        {
            if (dragablzItems == null)
            {
                throw new ArgumentNullException(nameof(dragablzItems));
            }

            var items = dragablzItems.ToList( );

            var x     = 0.0;
            var width = bounds.Width / items.Count;

            foreach (var dragablzItem in items)
            {
                Layout.SetFloatingItemState(dragablzItem, WindowState.Normal);
                dragablzItem.SetCurrentValue(DragablzItem.XProperty, x);
                dragablzItem.SetCurrentValue(DragablzItem.YProperty, 0d);
                x += width;
                dragablzItem.SetCurrentValue(FrameworkElement.WidthProperty, width);
                dragablzItem.SetCurrentValue(FrameworkElement.HeightProperty, bounds.Height);
            }
        }