public void ApplyTemplate_Should_Create_Visual_Children()
        {
            var target = new TemplatedControl
            {
                Template = new FuncControlTemplate((_, __) => new Decorator
                {
                    Child = new Panel
                    {
                        Children =
                        {
                            new TextBlock(),
                            new Border(),
                        }
                    }
                }),
            };

            target.ApplyTemplate();

            var types = target.GetVisualDescendants().Select(x => x.GetType()).ToList();

            Assert.Equal(
                new[]
            {
                typeof(Decorator),
                typeof(Panel),
                typeof(TextBlock),
                typeof(Border)
            },
                types);
            Assert.Empty(target.GetLogicalChildren());
        }
        public void Changing_Template_Should_Clear_Old_Templated_Childs_Parent()
        {
            var target = new TemplatedControl
            {
                Template = new FuncControlTemplate((_, __) => new Decorator())
            };

            target.ApplyTemplate();

            var child = (Decorator)target.GetVisualChildren().Single();

            target.Template = new FuncControlTemplate((_, __) => new Canvas());
            target.ApplyTemplate();

            Assert.Null(child.Parent);
        }
Ejemplo n.º 3
0
        public void Templated_Children_Should_Have_TemplatedParent_Set()
        {
            var target = new TemplatedControl
            {
                Template = new FuncControlTemplate(_ => new Decorator
                {
                    Child = new Panel
                    {
                        Children = new Controls
                        {
                            new TextBlock(),
                            new Border(),
                        }
                    }
                }),
            };

            target.ApplyTemplate();

            var templatedParents = target.GetVisualDescendents()
                                   .OfType <IControl>()
                                   .Select(x => x.TemplatedParent)
                                   .ToList();

            Assert.Equal(4, templatedParents.Count);
            Assert.True(templatedParents.All(x => x == target));
        }
Ejemplo n.º 4
0
        public void Nested_Templated_Control_Should_Not_Have_Template_Applied()
        {
            var target = new TemplatedControl
            {
                Template = new FuncControlTemplate(_ => new ScrollViewer())
            };

            target.ApplyTemplate();

            var child = (ScrollViewer)target.GetVisualChildren().Single();

            Assert.Empty(child.GetVisualChildren());
        }
Ejemplo n.º 5
0
        public void Templated_Child_Should_Have_Parent_Set()
        {
            var target = new TemplatedControl
            {
                Template = new FuncControlTemplate(_ => new Decorator())
            };

            target.ApplyTemplate();

            var child = (Decorator)target.GetVisualChildren().Single();

            Assert.Equal(target, child.Parent);
            Assert.Equal(target, child.GetLogicalParent());
        }
Ejemplo n.º 6
0
        public void Templated_Child_Should_Have_ApplyTemplate_Called_With_Logical_Then_Visual_Parent()
        {
            var target = new TemplatedControl
            {
                Template = new FuncControlTemplate(_ => new ApplyTemplateTracker())
            };

            target.ApplyTemplate();

            var child = (ApplyTemplateTracker)target.GetVisualChildren().Single();

            Assert.Equal(
                new[]
            {
                new Tuple <IVisual, ILogical>(null, target),
                new Tuple <IVisual, ILogical>(target, target),
            },
                child.Invocations);
        }
Ejemplo n.º 7
0
        public void Templated_Child_Should_Be_NameScope()
        {
            var target = new TemplatedControl
            {
                Template = new FuncControlTemplate(_ => new Decorator
                {
                    Child = new Panel
                    {
                        Children = new Controls
                        {
                            new TextBlock(),
                            new Border(),
                        }
                    }
                }),
            };

            target.ApplyTemplate();

            Assert.NotNull(NameScope.GetNameScope((Control)target.GetVisualChildren().Single()));
        }
Ejemplo n.º 8
0
		public void TemplatedControl ()
		{
			TemplatedControl c = new TemplatedControl { Name = "Custom" };
			c.ApplyTemplate ();

			Rectangle Bob = new Rectangle { Name = "Bob" };
			Storyboard resourceSB = c.Resources ["ResourceSB"] as Storyboard;
			Storyboard templateSb = (Storyboard) c.GetTemplateChild ("TemplateSB");
			Grid grid = c.TemplateGrid;
			Rectangle rect = (Rectangle) grid.FindName ("Rect");
			Rectangle fakeGrid = new Rectangle { Name = "Grid" };

			c.TemplateGrid.Children.Add (Bob);
			testArea.Children.Add (c);

			Assert.IsNull (testArea.FindName ("LayoutRoot"), "LayoutRoot.FindName (\"LayoutRoot\")");
			Assert.IsTrue (testArea.FindName ("Custom") == c, "LayoutRoot.FindName (\"Custom\")");
			Assert.IsNull (testArea.FindName ("Grid"), "LayoutRoot.FindName (\"Grid\")");
			Assert.IsNull (testArea.FindName ("Bob"), "LayoutRoot.FindName (\"Bob\")");
			Assert.IsNull (testArea.FindName ("Rect"), "LayoutRoot.FindName (\"Rect\")");

			Assert.IsNull (c.FindName ("LayoutRoot"), "c.FindName (\"LayoutRoot\")");
			Assert.IsTrue (c.FindName ("Custom") == c, "c.FindName (\"Custom\")");
			Assert.IsNull (c.FindName ("Grid"), "c.FindName (\"Grid\")");
			Assert.IsTrue (c.FindName ("Bob") == Bob, "c.FindName (\"Bob\")");
			Assert.IsNull (c.FindName ("Rect"), "c.FindName (\"Rect\")");

			Assert.IsNull (grid.FindName ("LayoutRoot"), "grid.FindName (\"LayoutRoot\")");
			Assert.IsNull (grid.FindName ("Custom"), "grid.FindName (\"Custom\")");
			Assert.IsTrue (grid.FindName ("Grid") == grid, "grid.FindName (\"Grid\")");
			Assert.IsNull (grid.FindName ("Bob"), "grid.FindName (\"Bob\")");
			Assert.IsTrue (grid.FindName ("Rect") == rect, "grid.FindName (\"Rect\")");

			Assert.IsNull (Bob.FindName ("LayoutRoot"), "Bob.FindName (\"LayoutRoot\")");
			Assert.IsTrue (Bob.FindName ("Custom") == c, "Bob.FindName (\"Custom\")");
			Assert.IsNull (Bob.FindName ("Grid"), "Bob.FindName (\"Grid\")");
			Assert.IsTrue (Bob.FindName ("Bob") == Bob, "Bob.FindName (\"Bob\")");
			Assert.IsNull (Bob.FindName ("Rect"), "Bob.FindName (\"Rect\")");

			Assert.IsNull (rect.FindName ("LayoutRoot"), "rect.FindName (\"LayoutRoot\")");
			Assert.IsNull (rect.FindName ("Custom"), "rect.FindName (\"Custom\")");
			Assert.IsTrue (rect.FindName ("Grid") == c.TemplateGrid, "rect.FindName (\"Grid\")");
			Assert.IsNull (rect.FindName ("Bob"), "rect.FindName (\"Bob\")");
			Assert.IsTrue (rect.FindName ("Rect") == rect, "rect.FindName (\"Rect\")");
		}