Ejemplo n.º 1
0
        public void Named_OfType_Template_Child_Of_Control_With_Two_Classes_Wrong_Type()
        {
            var template = new FuncControlTemplate(parent =>
            {
                return(new Border
                {
                    Name = "border",
                });
            });

            var control = new Button
            {
                Template = template,
            };

            control.ApplyTemplate();

            var selector = default(Selector)
                           .OfType <Button>()
                           .Class("foo")
                           .Class("bar")
                           .Template()
                           .OfType <TextBlock>()
                           .Name("baz");

            var border = (Border)((IVisual)control).VisualChildren.Single();
            var values = new List <bool>();
            var match  = selector.Match(border);

            Assert.Equal(SelectorMatchResult.NeverThisType, match.Result);
        }
Ejemplo n.º 2
0
 public TestTemplatedRoot()
 {
     Template = new FuncControlTemplate <TestTemplatedRoot>(x => new ContentPresenter
     {
         Name = "PART_ContentPresenter",
     });
 }
 public TestTemplatedRoot()
 {
     Template = new FuncControlTemplate <TestTemplatedRoot>((x, scope) => new ContentPresenter
     {
         Name = "PART_ContentPresenter",
     }.RegisterInNameScope(scope));
 }
    private static ControlTheme CreateTheme()
    {
        var template = new FuncControlTemplate <ThemedControl>((o, n) => new Border());

        return(new ControlTheme
        {
            TargetType = typeof(ThemedControl),
            Setters =
            {
                new Setter(TemplatedControl.TemplateProperty,     template),
                new Setter(TemplatedControl.CornerRadiusProperty, new CornerRadius(5)),
            },
            Children =
            {
                new Style(x => x.Nesting().Template().OfType <Border>())
                {
                    Setters ={ new Setter(Border.BackgroundProperty,               Brushes.Red)   }
                },
                new Style(x => x.Nesting().Class("foo").Template().OfType <Border>())
                {
                    Setters ={ new Setter(Border.BackgroundProperty,               Brushes.Green) }
                },
            }
        });
    }
Ejemplo n.º 5
0
 public TestTemplatedRoot()
 {
     LayoutManager = new LayoutManager(this);
     Template      = new FuncControlTemplate <TestTemplatedRoot>((x, scope) => new ContentPresenter
     {
         Name = "PART_ContentPresenter",
     }.RegisterInNameScope(scope));
 }
Ejemplo n.º 6
0
 public TestRoot()
 {
     Template = new FuncControlTemplate<TestRoot>(x => new ContentPresenter
     {
         Name = "PART_ContentPresenter",
         [!ContentPresenter.ContentProperty] = x[!ContentControl.ContentProperty],
     });
 }
Ejemplo n.º 7
0
 public TestTemplatedControl()
 {
     Template = new FuncControlTemplate <TestTemplatedControl>(parent =>
                                                               new Canvas
     {
         [~IsVisibleProperty] = parent[~IsCanvasVisibleProperty]
     });
 }
Ejemplo n.º 8
0
 public TemplatedControlWithPopup()
 {
     Template = new FuncControlTemplate <TemplatedControlWithPopup>(parent =>
                                                                    new Popup
     {
         [!Popup.ChildProperty] = parent[!TemplatedControlWithPopup.PopupContentProperty],
     });
 }
Ejemplo n.º 9
0
 public TestRoot()
 {
     Template = new FuncControlTemplate <TestRoot>(x => new ContentPresenter
     {
         Name = "PART_ContentPresenter",
         [!ContentPresenter.ContentProperty] = x[!ContentControl.ContentProperty],
     });
 }
Ejemplo n.º 10
0
 public TestContainer()
 {
     Template = new FuncControlTemplate <TestContainer>((parent, scope) => new ContentPresenter
     {
         Name = "PART_ContentPresenter",
         [~ContentPresenter.ContentProperty]         = parent[~ContentControl.ContentProperty],
         [~ContentPresenter.ContentTemplateProperty] = parent[~ContentControl.ContentTemplateProperty],
     }.RegisterInNameScope(scope));
 }
Ejemplo n.º 11
0
 public TestContainer()
 {
     Template = new FuncControlTemplate <TestContainer>(parent => new ContentPresenter
     {
         Name = "PART_ContentPresenter",
         [~ContentPresenter.ContentProperty]         = parent[~ContentControl.ContentProperty],
         [~ContentPresenter.ContentTemplateProperty] = parent[~ContentControl.ContentTemplateProperty],
     });
 }
Ejemplo n.º 12
0
 public TemplatedControlWithPopup()
 {
     Template = new FuncControlTemplate <TemplatedControlWithPopup>((parent, _) =>
                                                                    new Popup
     {
         [!Popup.ChildProperty] = parent[!TemplatedControlWithPopup.PopupContentProperty],
         PlacementTarget        = parent
     });
 }
Ejemplo n.º 13
0
        public void TabItem_Templates_Should_Be_Set_Before_TabItem_ApplyTemplate()
        {
            var collection = new[]
            {
                new TabItem
                {
                    Name    = "first",
                    Content = "foo",
                },
                new TabItem
                {
                    Name    = "second",
                    Content = "bar",
                },
                new TabItem
                {
                    Name    = "3rd",
                    Content = "barf",
                },
            };

            var template = new FuncControlTemplate <TabItem>(x => new Decorator());

            using (PerspexLocator.EnterScope())
            {
                PerspexLocator.CurrentMutable.Bind <IStyler>().ToConstant(new Styler());

                var root = new TestRoot
                {
                    Styles = new Styles
                    {
                        new Style(x => x.OfType <TabItem>())
                        {
                            Setters = new[]
                            {
                                new Setter(TemplatedControl.TemplateProperty, template)
                            }
                        }
                    },
                    Child = new TabControl
                    {
                        Template = new FuncControlTemplate <TabControl>(CreateTabControlTemplate),
                        Items    = collection,
                    }
                };
            }

            Assert.Same(collection[0].Template, template);
            Assert.Same(collection[1].Template, template);
            Assert.Same(collection[2].Template, template);
        }
Ejemplo n.º 14
0
        public void TabItem_Templates_Should_Be_Set_Before_TabItem_ApplyTemplate()
        {
            var collection = new[]
            {
                new TabItem
                {
                    Name    = "first",
                    Content = "foo",
                },
                new TabItem
                {
                    Name    = "second",
                    Content = "bar",
                },
                new TabItem
                {
                    Name    = "3rd",
                    Content = "barf",
                },
            };

            var template = new FuncControlTemplate <TabItem>((x, __) => new Decorator());

            using (UnitTestApplication.Start(TestServices.RealStyler))
            {
                var root = new TestRoot
                {
                    Styles =
                    {
                        new Style(x => x.OfType <TabItem>())
                        {
                            Setters = new[]
                            {
                                new Setter(TemplatedControl.TemplateProperty, template)
                            }
                        }
                    },
                    Child = new TabControl
                    {
                        Template = TabControlTemplate(),
                        Items    = collection,
                    }
                };
            }

            Assert.Same(collection[0].Template, template);
            Assert.Same(collection[1].Template, template);
            Assert.Same(collection[2].Template, template);
        }
Ejemplo n.º 15
0
        public void Template_Doesnt_Get_Executed_On_Set()
        {
            bool executed = false;

            var template = new FuncControlTemplate(_ =>
            {
                executed = true;
                return new Control();
            });

            var target = new TemplatedControl
            {
                Template = template,
            };

            Assert.False(executed);
        }
Ejemplo n.º 16
0
        public void Template_Doesnt_Get_Executed_On_Set()
        {
            bool executed = false;

            var template = new FuncControlTemplate(_ =>
            {
                executed = true;
                return(new Control());
            });

            var target = new TemplatedControl
            {
                Template = template,
            };

            Assert.False(executed);
        }
Ejemplo n.º 17
0
        public void TemplatedParent_Is_Set_On_Generated_Template()
        {
            Control templateResult = new Control();

            var template = new FuncControlTemplate(_ =>
            {
                return(templateResult);
            });

            var target = new TemplatedControl
            {
                Template = template,
            };

            target.Measure(new Size(100, 100));

            Assert.Equal(target, templateResult.TemplatedParent);
        }
Ejemplo n.º 18
0
        public void Template_Gets_Executed_On_Measure()
        {
            bool executed = false;

            var template = new FuncControlTemplate(_ =>
            {
                executed = true;
                return(new Control());
            });

            var target = new TemplatedControl
            {
                Template = template,
            };

            target.Measure(new Size(100, 100));

            Assert.True(executed);
        }
Ejemplo n.º 19
0
        public void Template_Result_Becomes_Visual_Child()
        {
            Control templateResult = new Control();

            var template = new FuncControlTemplate(_ =>
            {
                return templateResult;
            });

            var target = new TemplatedControl
            {
                Template = template,
            };

            target.Measure(new Size(100, 100));
            var children = target.GetVisualChildren().ToList();

            Assert.Equal(new[] { templateResult }, children);
        }
Ejemplo n.º 20
0
        public void Template_Gets_Executed_On_Measure()
        {
            bool executed = false;

            var template = new FuncControlTemplate(_ =>
            {
                executed = true;
                return new Control();
            });

            var target = new TemplatedControl
            {
                Template = template,
            };

            target.Measure(new Size(100, 100));

            Assert.True(executed);
        }
Ejemplo n.º 21
0
        public void Template_Result_Becomes_Visual_Child()
        {
            Control templateResult = new Control();

            var template = new FuncControlTemplate(_ =>
            {
                return(templateResult);
            });

            var target = new TemplatedControl
            {
                Template = template,
            };

            target.Measure(new Size(100, 100));
            var children = target.GetVisualChildren().ToList();

            Assert.Equal(new[] { templateResult }, children);
        }
Ejemplo n.º 22
0
        public void Named_Template_Child_Of_Control_With_Two_Classes()
        {
            var template = new FuncControlTemplate(parent =>
            {
                return(new Border
                {
                    Name = "border",
                });
            });

            var control = new Button
            {
                Template = template,
            };

            control.ApplyTemplate();

            var selector = default(Selector)
                           .OfType <Button>()
                           .Class("foo")
                           .Class("bar")
                           .Template()
                           .Name("border");

            var border = (Border)((IVisual)control).VisualChildren.Single();
            var values = new List <bool>();
            var match  = selector.Match(border);

            Assert.Equal(SelectorMatchResult.Sometimes, match.Result);
            match.Activator.Subscribe(x => values.Add(x));

            Assert.Equal(new[] { false }, values);
            control.Classes.AddRange(new[] { "foo", "bar" });
            Assert.Equal(new[] { false, true }, values);
            control.Classes.Remove("foo");
            Assert.Equal(new[] { false, true, false }, values);
        }
Ejemplo n.º 23
0
        public void Template_Child_Of_Control_With_Two_Classes()
        {
            var template = new FuncControlTemplate(parent =>
            {
                return new Border
                {
                    Name = "border",
                };
            });

            var control = new Button
            {
                Template = template,
            };

            control.ApplyTemplate();

            var selector = new Selector()
                .OfType<Button>()
                .Class("foo")
                .Class("bar")
                .Template()
                .Name("border");

            var border = (Border)((IVisual)control).VisualChildren.Single();
            var values = new List<bool>();
            var activator = selector.Match(border).ObservableResult;

            activator.Subscribe(x => values.Add(x));

            Assert.Equal(new[] { false }, values);
            control.Classes.AddRange(new[] { "foo", "bar" });
            Assert.Equal(new[] { false, true }, values);
            control.Classes.Remove("foo");
            Assert.Equal(new[] { false, true, false }, values);
        }
Ejemplo n.º 24
0
        public void Template_Child_Of_Control_With_Two_Classes()
        {
            var template = new FuncControlTemplate(parent =>
            {
                return(new Border
                {
                    Name = "border",
                });
            });

            var control = new Button
            {
                Template = template,
            };

            control.ApplyTemplate();

            var selector = new Selector()
                           .OfType <Button>()
                           .Class("foo")
                           .Class("bar")
                           .Template()
                           .Name("border");

            var border    = (Border)((IVisual)control).VisualChildren.Single();
            var values    = new List <bool>();
            var activator = selector.Match(border).ObservableResult;

            activator.Subscribe(x => values.Add(x));

            Assert.Equal(new[] { false }, values);
            control.Classes.Add("foo", "bar");
            Assert.Equal(new[] { false, true }, values);
            control.Classes.Remove("foo");
            Assert.Equal(new[] { false, true, false }, values);
        }
Ejemplo n.º 25
0
        public void TabItem_Templates_Should_Be_Set_Before_TabItem_ApplyTemplate()
        {
            var collection = new[]
            {
                new TabItem
                {
                    Name = "first",
                    Content = "foo",
                },
                new TabItem
                {
                    Name = "second",
                    Content = "bar",
                },
                new TabItem
                {
                    Name = "3rd",
                    Content = "barf",
                },
            };

            var template = new FuncControlTemplate<TabItem>(x => new Decorator());

            using (UnitTestApplication.Start(TestServices.RealStyler))
            {
                var root = new TestRoot
                {
                    Styles = new Styles
                    {
                        new Style(x => x.OfType<TabItem>())
                        {
                            Setters = new[]
                            {
                                new Setter(TemplatedControl.TemplateProperty, template)
                            }
                        }
                    },
                    Child = new TabControl
                    {
                        Template = new FuncControlTemplate<TabControl>(CreateTabControlTemplate),
                        Items = collection,
                    }
                };
            }

            Assert.Same(collection[0].Template, template);
            Assert.Same(collection[1].Template, template);
            Assert.Same(collection[2].Template, template);
        }
Ejemplo n.º 26
0
        public void TabItem_Templates_Should_Be_Set_Before_TabItem_ApplyTemplate()
        {
            var collection = new[]
            {
                new TabItem
                {
                    Name = "first",
                    Content = "foo",
                },
                new TabItem
                {
                    Name = "second",
                    Content = "bar",
                },
                new TabItem
                {
                    Name = "3rd",
                    Content = "barf",
                },
            };

            var template = new FuncControlTemplate<TabItem>(x => new Decorator());

            using (PerspexLocator.EnterScope())
            {
                PerspexLocator.CurrentMutable.Bind<IStyler>().ToConstant(new Styler());

                var root = new TestRoot
                {
                    Styles = new Styles
                    {
                        new Style(x => x.OfType<TabItem>())
                        {
                            Setters = new[]
                            {
                                new Setter(TemplatedControl.TemplateProperty, template)
                            }
                        }
                    },
                    Child = new TabControl
                    {
                        Template = new FuncControlTemplate<TabControl>(CreateTabControlTemplate),
                        Items = collection,
                    }
                };
            }

            Assert.Same(collection[0].Template, template);
            Assert.Same(collection[1].Template, template);
            Assert.Same(collection[2].Template, template);
        }
Ejemplo n.º 27
0
 public TestTemplatedRoot()
 {
     Template = new FuncControlTemplate<TestTemplatedRoot>(x => new ContentPresenter());
 }
Ejemplo n.º 28
0
 public TestTemplatedControl()
 {
     Template = new FuncControlTemplate<TestTemplatedControl>(parent =>
         new Canvas
         {
             [~IsVisibleProperty] = parent[~IsCanvasVisibleProperty]
         });
 }
Ejemplo n.º 29
0
 public TestTemplatedRoot()
 {
     Template = new FuncControlTemplate <TestTemplatedRoot>(x => new ContentPresenter());
 }
Ejemplo n.º 30
0
        public void TemplatedParent_Is_Set_On_Generated_Template()
        {
            Control templateResult = new Control();

            var template = new FuncControlTemplate(_ =>
            {
                return templateResult;
            });

            var target = new TemplatedControl
            {
                Template = template,
            };

            target.Measure(new Size(100, 100));

            Assert.Equal(target, templateResult.TemplatedParent);
        }