コード例 #1
0
        public void Templated_Children_Should_Have_TemplatedParent_Set()
        {
            var target = new TestTemplatedControl
            {
                Template = new FuncControlTemplate(_ =>
                {
                    return(new StackPanel
                    {
                        Children = new Controls
                        {
                            new TextBlock
                            {
                            }
                        }
                    });
                }),
            };

            target.ApplyTemplate();

            var panel     = target.GetTemplateChildren().OfType <StackPanel>().Single();
            var textBlock = target.GetTemplateChildren().OfType <TextBlock>().Single();

            Assert.Equal(target, panel.TemplatedParent);
            Assert.Equal(target, textBlock.TemplatedParent);
        }
コード例 #2
0
        public void GetTemplateChildren_Should_Not_Return_Nested_Template_Controls()
        {
            var target = new TestTemplatedControl();
            var border1 = new Border { Name = "border1", TemplatedParent = target };
            var inner = new TestTemplatedControl { Name = "inner", TemplatedParent = target };
            var border2 = new Border { Name = "border2", TemplatedParent = inner };
            var border3 = new Border { Name = "border3", TemplatedParent = inner };
            var border4 = new Border { Name = "border4", TemplatedParent = target };
            var border5 = new Border { Name = "border5", TemplatedParent = null };

            target.AddVisualChild(border1);
            border1.Child = inner;
            inner.AddVisualChild(border2);
            inner.AddVisualChild(border3);
            border3.Child = border4;
            border4.Child = border5;

            var result = target.GetTemplateChildren().Select(x => x.Name).ToArray();

            Assert.Equal(new[] { "border1", "inner", "border4" }, result);
        }
コード例 #3
0
        public void Presenter_Children_Should_Not_Have_TemplatedParent_Set()
        {
            var target = new TestTemplatedControl
            {
                Template = new FuncControlTemplate(_ =>
                {
                    return(new ContentPresenter
                    {
                        Content = new TextBlock
                        {
                        }
                    });
                }),
            };

            target.ApplyTemplate();

            var presenter = target.GetTemplateChildren().OfType <ContentPresenter>().Single();
            var textBlock = (TextBlock)presenter.Child;

            Assert.Equal(target, presenter.TemplatedParent);
            Assert.Null(textBlock.TemplatedParent);
        }
コード例 #4
0
        public void Nested_Templated_Controls_Have_Correct_TemplatedParent()
        {
            var target = new TestTemplatedControl
            {
                Template = new ControlTemplate(_ =>
                {
                    return new ContentControl
                    {
                        Template = new ControlTemplate(parent =>
                        {
                            return new Border
                            {
                                Child = new ContentPresenter
                                {
                                    [~ContentPresenter.ContentProperty] = parent.GetObservable(ContentControl.ContentProperty),
                                }
                            };
                        }),
                        Content = new TextBlock
                        {
                        }
                    };
                }),
            };

            target.ApplyTemplate();

            var contentControl = target.GetTemplateChildren().OfType<ContentControl>().Single();
            var border = contentControl.GetTemplateChildren().OfType<Border>().Single();
            var presenter = contentControl.GetTemplateChildren().OfType<ContentPresenter>().Single();
            var textBlock = (TextBlock)presenter.Content;

            Assert.Equal(target, contentControl.TemplatedParent);
            Assert.Equal(contentControl, border.TemplatedParent);
            Assert.Equal(contentControl, presenter.TemplatedParent);
            Assert.Equal(target, textBlock.TemplatedParent);
        }
コード例 #5
0
        public void Nested_Templated_Controls_Have_Correct_TemplatedParent()
        {
            var target = new TestTemplatedControl
            {
                Template = new FuncControlTemplate(_ =>
                {
                    return(new ContentControl
                    {
                        Template = new FuncControlTemplate(parent =>
                        {
                            return new Border
                            {
                                Child = new ContentPresenter
                                {
                                    [~ContentPresenter.ContentProperty] = parent.GetObservable(ContentControl.ContentProperty),
                                }
                            };
                        }),
                        Content = new TextBlock
                        {
                        }
                    });
                }),
            };

            target.ApplyTemplate();

            var contentControl = target.GetTemplateChildren().OfType <ContentControl>().Single();
            var border         = contentControl.GetTemplateChildren().OfType <Border>().Single();
            var presenter      = contentControl.GetTemplateChildren().OfType <ContentPresenter>().Single();
            var textBlock      = (TextBlock)presenter.Content;

            Assert.Equal(target, contentControl.TemplatedParent);
            Assert.Equal(contentControl, border.TemplatedParent);
            Assert.Equal(contentControl, presenter.TemplatedParent);
            Assert.Equal(target, textBlock.TemplatedParent);
        }
コード例 #6
0
        public void Presenter_Children_Should_Not_Have_TemplatedParent_Set()
        {
            var target = new TestTemplatedControl
            {
                Template = new ControlTemplate(_ =>
                {
                    return new ContentPresenter
                    {
                        Content =  new TextBlock
                        {
                        }
                    };
                }),
            };

            target.ApplyTemplate();

            var presenter = target.GetTemplateChildren().OfType<ContentPresenter>().Single();
            var textBlock = (TextBlock)presenter.Child;

            Assert.Equal(target, presenter.TemplatedParent);
            Assert.Null(textBlock.TemplatedParent);
        }
コード例 #7
0
        public void Templated_Children_Should_Have_TemplatedParent_Set()
        {
            var target = new TestTemplatedControl
            {
                Template = new ControlTemplate(_ =>
                {
                    return new StackPanel
                    {
                        Children = new Controls
                        {
                            new TextBlock
                            {
                            }
                        }
                    };
                }),
            };

            target.ApplyTemplate();

            var panel = target.GetTemplateChildren().OfType<StackPanel>().Single();
            var textBlock = target.GetTemplateChildren().OfType<TextBlock>().Single();

            Assert.Equal(target, panel.TemplatedParent);
            Assert.Equal(target, textBlock.TemplatedParent);
        }