Beispiel #1
0
        public static void OrganizeGrid(this Grid grid, List <List <View> > items, OrganizeMode mode)
        {
            rowCount    = grid.RowDefinitions.Count;
            columnCount = grid.ColumnDefinitions.Count;
            if (items.Count == 0)
            {
                return;
            }

            if (mode == OrganizeMode.HorizontalRight)
            {
                gridPair = new Vector2D <int>()
                {
                    X = columnCount - 1, Y = 0
                };

                foreach (View view in items[0])
                {
                    grid.Children.Add(view, columnCount - 1, 0);
                }
            }
            else
            {
                gridPair = new Vector2D <int>()
                {
                    X = 0, Y = 0
                };
                foreach (View view in items[0])
                {
                    grid.Children.Add(view, 0, 0);
                }
            }
            for (int i = 1; i < items.Count; i++)
            {
                SetGridPairs(mode);
                if (gridPair.Y > rowCount - 1)
                {
                    grid.RowDefinitions.Add(new RowDefinition()
                    {
                        Height = grid.RowDefinitions[0].Height
                    });
                    rowCount++;
                }
                if (gridPair.X > columnCount - 1)
                {
                    grid.ColumnDefinitions.Add(new ColumnDefinition()
                    {
                        Width = grid.ColumnDefinitions[0].Width
                    });
                    columnCount++;
                }
                foreach (View view in items[i])
                {
                    grid.Children.Add(view, (int)gridPair.X, (int)gridPair.Y);
                }
            }
        }
Beispiel #2
0
 private static Vector2D <int> SetGridPairs(OrganizeMode mode)
 {
     if (mode == OrganizeMode.HorizontalLeft)
     {
         if (gridPair.X < columnCount - 1)
         {
             gridPair.X++;
         }
         else
         {
             gridPair.X = 0; gridPair.Y++;
         }
     }
     else if (mode == OrganizeMode.HorizontalRight)
     {
         if (gridPair.X > 0)
         {
             gridPair.X--;
         }
         else
         {
             gridPair.X = columnCount - 1; gridPair.Y++;
         }
     }
     else if (mode == OrganizeMode.VerticalLeft)
     {
         if (gridPair.Y < rowCount - 1)
         {
             gridPair.Y++;
         }
         else
         {
             gridPair.Y = 0; gridPair.X++;
         }
     }
     else if (mode == OrganizeMode.TwoRowSpanLeft)
     {
         if (gridPair.Y % 2 == 0)
         {
             gridPair.Y++;
         }
         else if (gridPair.X < columnCount - 1)
         {
             gridPair.Y -= 1; gridPair.X++;
         }
         else
         {
             gridPair.Y++; gridPair.X = 0;
         }
     }
     else if (mode == OrganizeMode.HorizontalZigZag)
     {
         if (gridPair.Y % 2 == 0)
         {
             if (gridPair.X < columnCount - 1)
             {
                 gridPair.X++;
             }
             else
             {
                 gridPair.Y++;
             }
         }
         else
         {
             if (gridPair.X > 0)
             {
                 gridPair.X--;
             }
             else
             {
                 gridPair.Y++;
             }
         }
     }
     return(gridPair);
 }
Beispiel #3
0
        public static void OrganizeGrid <T>(this Grid grid, IEnumerable <T> items, OrganizeMode mode)
        {
            rowCount    = grid.RowDefinitions.Count;
            columnCount = grid.ColumnDefinitions.Count;

            if (!typeof(View).IsAssignableFrom(typeof(T)))
            {
                throw new ArgumentException();
            }
            if (items.Count() == 0)
            {
                return;
            }

            if (mode == OrganizeMode.HorizontalRight)
            {
                gridPair = new Vector2D <int>()
                {
                    X = columnCount - 1, Y = 0
                };

                grid.Children.Add(items.ElementAt(0) as View, columnCount - 1, 0);
            }
            else
            {
                gridPair = new Vector2D <int>()
                {
                    X = 0, Y = 0
                };

                grid.Children.Add(items.ElementAt(0) as View, 0, 0);
            }


            if (grid.RowDefinitions.Count == 0)
            {
                grid.RowDefinitions.Add(new RowDefinition());
            }
            if (grid.ColumnDefinitions.Count == 0)
            {
                grid.ColumnDefinitions.Add(new ColumnDefinition());
            }
            for (int i = 1; i < items.Count(); i++)
            {
                SetGridPairs(mode);
                if (gridPair.Y > rowCount - 1)
                {
                    //var height = grid.RowDefinitions.Count > 0 ? grid.RowDefinitions[0].Height : grid.Height;
                    grid.RowDefinitions.Add(new RowDefinition()
                    {
                        Height = grid.RowDefinitions.First().Height
                    });
                    rowCount++;
                }
                if (gridPair.X > columnCount - 1)
                {
                    grid.ColumnDefinitions.Add(new ColumnDefinition()
                    {
                        Width = grid.ColumnDefinitions.First().Width
                    });
                    columnCount++;
                }
                Console.WriteLine("Utility 679 grid pair x " + gridPair.X + " grid pair y " + gridPair.Y);
                grid.Children.Add(items.ElementAt(i) as View, gridPair.X, gridPair.Y);
            }
        }