public IVisualRenderElement GetRenderElement(IRenderElementFactory factory) { if (visualRenderElement == null) { renderElementFactory = factory; visualRenderElement = factory.CreateVisualRenderElement(this); visualRenderElement.Background = VisualBackground; visualRenderElement.Bounds = VisualBounds; visualRenderElement.Clip = VisualClip; visualRenderElement.ClipToBounds = VisualClipToBounds; visualRenderElement.IsHitTestVisible = VisualIsHitTestVisible; visualRenderElement.IsVisible = VisualIsVisible; visualRenderElement.Opacity = VisualOpacity; visualRenderElement.Transform = VisualTransform; object content = CreateRenderElementContentOverride(factory); if (content != null) { renderChildrenOffset = 1; visualRenderElement.InsertChild(0, content); } int index = 0; foreach (Visual child in VisualChildren) { child.GetRenderElement(factory); visualRenderElement.InsertChild(renderChildrenOffset + index, child.GetRenderElement(factory)); index++; } } return(visualRenderElement); }
private IVisualRenderElement CreateRenderElement(IRenderElementFactory factory) { IVisualRenderElement visualRenderElement = factory.CreateVisualRenderElement(this); visualRenderElement.Background = VisualBackground; visualRenderElement.Bounds = VisualBounds; visualRenderElement.ClipToBounds = VisualClipToBounds; visualRenderElement.IsHitTestVisible = VisualIsHitTestVisible; visualRenderElement.IsVisible = VisualIsVisible; visualRenderElement.Opacity = VisualOpacity; visualRenderElement.Transform = VisualTransform; visualRenderElement.Content = CreateRenderElementContentOverride(factory); int index = 0; foreach (Visual child in VisualChildren) { child.GetRenderElement(factory); visualRenderElement.InsertChild(index, child.GetRenderElement(factory)); index++; } return(visualRenderElement); }
public void AddVisualChild(Visual child) { if (child.VisualParent == this) { return; } if (child.VisualParent != null) { child.VisualParent.RemoveVisualChild(child); } child.VisualParent = this; visualChildren.Add(child); int renderChildIndex = visualChildren.Count - 1; if (visualRenderElement != null) { visualRenderElement.InsertChild(renderChildrenOffset + renderChildIndex, child.GetRenderElement(renderElementFactory)); } InvalidateHitTestBounds(); }