public void Should_Bind_To_Element() { TextBlock source; ContentControl target; var root = new TestRoot { Child = new StackPanel { Children = new Controls.Controls { (source = new TextBlock { Name = "source", Text = "foo", }), (target = new ContentControl { Name = "target", }) } } }; var binding = new Binding { ElementName = "source", }; binding.Bind(target, ContentControl.ContentProperty); Assert.Same(source, target.Content); }
/// <summary> /// The default template for a <see cref="ContentControl"/> control. /// </summary> /// <param name="control">The control being styled.</param> /// <returns>The root of the instantiated template.</returns> public static Control Template(ContentControl control) { return new ContentPresenter { Name = "contentPresenter", [~ContentPresenter.ContentProperty] = control[~ContentControl.ContentProperty], }; }
public void Clearing_Content_Should_Clear_Child_Controls_Parent() { var target = new ContentControl(); var child = new Control(); target.Content = child; target.Content = null; Assert.Null(child.Parent); Assert.Null(((ILogical)child).LogicalParent); }
private Control CreateNestedTemplate(ContentControl control) { return new ScrollViewer { Template = ControlTemplate.Create<ScrollViewer>(this.CreateTemplate), Content = new ContentPresenter { Name = "this" } }; }
/// <summary> /// The default template for a <see cref="ContentControl"/> control. /// </summary> /// <param name="control">The control being styled.</param> /// <returns>The root of the instantiated template.</returns> public static Control Template(ContentControl control) { return new Border { [~Border.BackgroundProperty] = control[~TemplatedControl.BackgroundProperty], Child = new ContentPresenter { Name = "contentPresenter", [~ContentPresenter.ContentProperty] = control[~ContentControl.ContentProperty], } }; }
public void Changing_Content_Should_Update_Presenter() { var target = new ContentControl(); target.Template = this.GetTemplate(); target.ApplyTemplate(); target.Content = "Foo"; target.Presenter.ApplyTemplate(); Assert.Equal("Foo", ((TextBlock)target.Presenter.Child).Text); target.Content = "Bar"; target.Presenter.ApplyTemplate(); Assert.Equal("Bar", ((TextBlock)target.Presenter.Child).Text); }
public void ScrollViewer_In_Template_Sets_Child_TemplatedParent() { var target = new ContentControl { Template = ControlTemplate.Create<ContentControl>(this.CreateNestedTemplate), Content = "Foo", }; target.ApplyTemplate(); var presenter = target.GetVisualDescendents() .OfType<ContentPresenter>() .Single(x => x.Name == "this"); Assert.Equal(target, presenter.TemplatedParent); }
public void Changing_Content_Should_Fire_LogicalChildren_CollectionChanged() { var contentControl = new ContentControl(); var child1 = new Control(); var child2 = new Control(); var called = false; contentControl.Template = this.GetTemplate(); contentControl.Content = child1; contentControl.ApplyTemplate(); ((ILogical)contentControl).LogicalChildren.CollectionChanged += (s, e) => called = true; contentControl.Content = child2; // Need to call ApplyTemplate on presenter for CollectionChanged to be called. var presenter = contentControl.GetTemplateChildren().Single(x => x.Name == "contentPresenter"); presenter.ApplyTemplate(); Assert.True(called); }
public void Content_Should_Have_TemplatedParent_Set_To_Null() { var target = new ContentControl(); var child = new Border(); target.Template = this.GetTemplate(); target.Content = child; target.ApplyTemplate(); Assert.Null(child.TemplatedParent); }
public void Setting_Content_Should_Fire_LogicalChildren_CollectionChanged() { var target = new ContentControl(); var child = new Control(); var called = false; ((ILogical)target).LogicalChildren.CollectionChanged += (s, e) => called = e.Action == NotifyCollectionChangedAction.Add; target.Template = this.GetTemplate(); target.Content = child; target.ApplyTemplate(); // Need to call ApplyTemplate on presenter for LogicalChildren to be updated. target.Presenter.ApplyTemplate(); Assert.True(called); }
public void Templated_Children_Should_Be_Styled() { using (var ctx = this.RegisterServices()) { var root = new TestRoot(); var target = new ContentControl(); var styler = new Mock<IStyler>(); Locator.CurrentMutable.Register(() => styler.Object, typeof(IStyler)); target.Content = "Foo"; target.Template = this.GetTemplate(); root.Content = target; target.ApplyTemplate(); styler.Verify(x => x.ApplyStyles(It.IsAny<ContentControl>()), Times.Once()); styler.Verify(x => x.ApplyStyles(It.IsAny<Border>()), Times.Once()); styler.Verify(x => x.ApplyStyles(It.IsAny<ContentPresenter>()), Times.Once()); styler.Verify(x => x.ApplyStyles(It.IsAny<TextBlock>()), Times.Once()); } }
public void Template_Should_Be_Instantiated() { using (var ctx = this.RegisterServices()) { var target = new ContentControl(); target.Content = "Foo"; target.Template = this.GetTemplate(); target.Measure(new Size(100, 100)); var child = ((IVisual)target).VisualChildren.Single(); Assert.IsType<Border>(child); child = child.VisualChildren.Single(); Assert.IsType<ContentPresenter>(child); child = child.VisualChildren.Single(); Assert.IsType<TextBlock>(child); } }
public void Setting_Content_To_String_Should_Make_TextBlock_Appear_In_LogicalChildren() { var target = new ContentControl(); var child = new Control(); target.Template = this.GetTemplate(); target.Content = "Foo"; target.ApplyTemplate(); var logical = (ILogical)target; Assert.Equal(1, logical.LogicalChildren.Count); Assert.IsType<TextBlock>(logical.LogicalChildren[0]); }
public void Setting_Content_To_String_Should_Set_Child_Controls_Parent() { var target = new ContentControl { Template = this.GetTemplate(), }; target.Content = "Foo"; target.ApplyTemplate(); var child = target.Presenter.Child; Assert.Equal(child.Parent, target); Assert.Equal(((ILogical)child).LogicalParent, target); }
public void Clearing_Content_Should_Remove_From_LogicalChildren() { var target = new ContentControl(); var child = new Control(); target.Template = this.GetTemplate(); target.Content = child; target.ApplyTemplate(); target.Content = null; // Need to call ApplyTemplate on presenter for LogicalChildren to be updated. target.Presenter.ApplyTemplate(); Assert.Empty(target.GetLogicalChildren()); }
public void Setting_Content_To_Control_Should_Make_Control_Appear_In_LogicalChildren() { var target = new ContentControl(); var child = new Control(); target.Template = this.GetTemplate(); target.Content = child; target.ApplyTemplate(); Assert.Equal(new[] { child }, ((ILogical)target).LogicalChildren.ToList()); }
public void ContentPresenter_Should_Have_TemplatedParent_Set() { var target = new ContentControl(); var child = new Border(); target.Template = this.GetTemplate(); target.Content = child; target.ApplyTemplate(); var contentPresenter = child.GetVisualParent<ContentPresenter>(); Assert.Equal(target, contentPresenter.TemplatedParent); }
public void Clearing_Content_Should_Remove_From_LogicalChildren() { var target = new ContentControl(); var child = new Control(); target.Template = this.GetTemplate(); target.Content = child; target.ApplyTemplate(); target.Content = null; // Need to call ApplyTemplate on presenter for LogocalChildren to be updated. var presenter = target.GetTemplateChildren().Single(x => x.Name == "contentPresenter"); presenter.ApplyTemplate(); Assert.Equal(new ILogical[0], ((ILogical)target).LogicalChildren.ToList()); }
public void Clearing_Content_Should_Fire_LogicalChildren_CollectionChanged() { var target = new ContentControl(); var child = new Control(); var called = false; target.Template = this.GetTemplate(); target.Content = child; target.ApplyTemplate(); ((ILogical)target).LogicalChildren.CollectionChanged += (s, e) => called = true; target.Content = null; // Need to call ApplyTemplate on presenter for CollectionChanged to be called. var presenter = target.GetTemplateChildren().Single(x => x.Name == "contentPresenter"); presenter.ApplyTemplate(); Assert.True(called); }
public void Should_Bind_To_Later_Added_Element() { ContentControl target; StackPanel stackPanel; var root = new TestRoot { Child = stackPanel = new StackPanel { Children = new Controls.Controls { (target = new ContentControl { Name = "target", }), } } }; var binding = new Binding { ElementName = "source", }; binding.Bind(target, ContentControl.ContentProperty); var source = new TextBlock { Name = "source", Text = "foo", }; stackPanel.Children.Add(source); Assert.Same(source, target.Content); }
public void GrokysTest() { var mainWindowViewModel = new MainWindowViewModel(); var contentControl = new ContentControl(); var synchronizer = new DataContextChangeSynchronizer(new DataContextChangeSynchronizer.BindingSource(new PropertyPath("Content"), mainWindowViewModel), new DataContextChangeSynchronizer.BindingTarget(contentControl, ContentControl.ContentProperty), _repo); synchronizer.StartUpdatingTargetWhenSourceChanges(); var logInViewModel = new LogInViewModel(); mainWindowViewModel.Content = logInViewModel; Assert.Equal(logInViewModel, contentControl.Content); }