private void OnChildWpfElementCreated(object sender, EventArgs e)
        {
            IWpfRenderElement childElement = (IWpfRenderElement)sender;
            int index = children.IndexOf(childElement);

            index = children.Take(index).Count(c => c.WpfElement != null);
            container.Children.Insert(index, childElement.WpfElement);
        }
        public void RemoveChild(object child)
        {
            IWpfRenderElement childElement = (IWpfRenderElement)child;

            if (child is IWpfDeferredRenderElement)
            {
                ((IWpfDeferredRenderElement)child).WpfElementCreated -= OnChildWpfElementCreated;
            }

            children.Remove(childElement);

            if (childElement.WpfElement != null)
            {
                container.Children.Remove(childElement.WpfElement);
            }
        }
        public void InsertChild(int index, object child)
        {
            IWpfRenderElement childElement = (IWpfRenderElement)child;

            if (child is IWpfDeferredRenderElement)
            {
                ((IWpfDeferredRenderElement)child).WpfElementCreated += OnChildWpfElementCreated;
            }

            children.Insert(index, childElement);

            if (childElement.WpfElement != null)
            {
                index = children.Take(index).Count(c => c.WpfElement != null);
                container.Children.Insert(index, childElement.WpfElement);
            }
        }