예제 #1
0
        void AddRandomItem(UxElement element, List <UxElement> descendants)
        {
            var containers         = descendants.Count > 0 ? descendants.Where(x => x.Name == "Grid") : new[] { element };
            var container          = RandomItem(containers);
            var existingChildCount = container.Elements.Count();
            var insertPoint        = _rng.Next(0, existingChildCount + 1);

            var insertElement = UxElement.Parse(
                $"<Grid ChildOrder=\"{(Depth(container) % 2 == 0 ? "RowMajor" : "ColumnMajor")}\" Background=\"{RandomItem(_colors)}\" />");

            if (insertPoint == existingChildCount)
            {
                container.Add(insertElement);
                ;
            }
            else
            {
                container.Elements.ElementAt(insertPoint).AddBeforeSelf(insertElement);
            }
        }
예제 #2
0
 public static int Depth(UxElement element)
 {
     return(element.Parent == null ? 0 : Depth(element.Parent) + 1);
 }
예제 #3
0
 static UxElement FindX(UxElement root)
 {
     return(root.DescendantsAndSelf().Single(el => el.Name == "X"));
 }