public static object GetChild(object source, int index) { if (DXMethods.IsChrome(source)) { return(DXMethods.GetRoot(source)); } if (DXMethods.IsIFrameworkRenderElementContext(source)) { var control = DXMethods.Is(source, "RenderControlBaseContext", "DevExpress.Xpf.Core.Native", false) ? ((dynamic)source).Control : null; var rcc = DXMethods.RenderChildrenCount(source); if (index >= rcc) { if (index == rcc && control != null) { return(control); } return(null); } return(DXMethods.GetRenderChild(source, index)); } if (source is Visual) { return(VisualTreeHelper.GetChild((Visual)source, index)); } return(null); }
public FREDrawingVisual(object context) { this.context = context; using (var dc = this.RenderOpen()) { DXMethods.Render(((dynamic)context).Factory, dc, context); var controls = new object[] { context }.Concat(RenderTreeHelper.RenderDescendants(context)); foreach (object ctrl in controls) { if (!DXMethods.Is(ctrl, "RenderControlBaseContext", null, false)) { continue; } var dctrl = ((dynamic)ctrl); dc.PushTransform((dctrl).GeneralTransform); dc.DrawRectangle(new VisualBrush((dctrl).Control), null, new Rect(new Point(0, 0), (dctrl).RenderSize)); dc.Pop(); } dc.Close(); } }
public static int GetChildrenCount(object source) { if (DXMethods.IsChrome(source)) { object root = DXMethods.GetRoot(source); if (root != null) { return(1); } } if (DXMethods.IsIFrameworkRenderElementContext(source)) { int hasControl = DXMethods.Is(source, "RenderControlBaseContext", "DevExpress.Xpf.Core.Native", false) && ((dynamic)source).Control != null ? 1 : 0; return(DXMethods.RenderChildrenCount(source) + hasControl); } if (source is Visual) { return(VisualTreeHelper.GetChildrenCount((Visual)source)); } return(0); }