private IBorderRenderElement CreateRenderElement(IRenderElementFactory factory) { IBorderRenderElement borderRenderElement = factory.CreateBorderRenderElement(this); borderRenderElement.Background = Background; borderRenderElement.BorderBrush = BorderBrush; borderRenderElement.BorderThickness = BorderThickness; borderRenderElement.Bounds = new Rect(VisualSize); borderRenderElement.CornerRadius = CornerRadius; borderRenderElement.IsHitTestVisible = IsHitTestVisible; return(borderRenderElement); }
protected override object CreateRenderElementContentOverride(IRenderElementFactory factory) { if (borderRenderElement == null) { borderRenderElement = factory.CreateBorderRenderElement(this); borderRenderElement.Background = Background; borderRenderElement.BorderBrush = BorderBrush; borderRenderElement.BorderThickness = BorderThickness; borderRenderElement.Bounds = new Rect(VisualSize); borderRenderElement.CornerRadius = CornerRadius; borderRenderElement.IsHitTestVisible = IsHitTestVisible; } return(borderRenderElement); }
public void BorderRenderTest() { Brush backgroundBrush = new LinearGradientBrush(30, Colors.Blue, Colors.Green); Brush borderBrush = new LinearGradientBrush(-30, Colors.Red, Colors.Blue); Thickness borderThickness = new Thickness(10, 20, 30, 40); Border border = new Border { Child = new FrameworkElement { Width = 200, Height = 100 }, Background = backgroundBrush, BorderBrush = borderBrush, BorderThickness = borderThickness, }; border.Measure(Size.Infinity); border.Arrange(new Rect(border.DesiredSize)); IRenderElementFactory factory = TestRenderElementFactory.Default; IVisualRenderElement visualRenderElement = border.GetRenderElement(factory); Assert.AreEqual(new Rect(240, 160), visualRenderElement.Bounds); Assert.AreEqual(1, visualRenderElement.Children.Count()); IBorderRenderElement borderRenderElement = visualRenderElement.Content as IBorderRenderElement; Assert.IsNotNull(borderRenderElement); Assert.AreEqual(backgroundBrush, borderRenderElement.Background); Assert.AreEqual(borderBrush, borderRenderElement.BorderBrush); Assert.AreEqual(borderThickness, borderRenderElement.BorderThickness); Assert.AreEqual(new Rect(240, 160), borderRenderElement.Bounds); IVisualRenderElement childVisualRenderElement = visualRenderElement.Children.Single() as IVisualRenderElement; Assert.IsNotNull(childVisualRenderElement); Assert.AreEqual(new Rect(10, 20, 200, 100), childVisualRenderElement.Bounds); border.Child = null; Assert.AreEqual(0, visualRenderElement.Children.Count()); }