Esempio n. 1
0
        public static ItemsControl ItemsControlFromItemContainer(AvaloniaObject container)
        {
            ILogical uiLogical = container as ILogical;

            if (uiLogical == null)
            {
                return(null);
            }

            // ui appeared in items collection
            ItemsControl ic = LogicalExtensions.GetLogicalParent(uiLogical) as ItemsControl;

            if (ic != null)
            {
                // this is the right ItemsControl as long as the item
                // is (or is eligible to be) its own container
                //IGeneratorHost host = ic as IGeneratorHost;
                //if (host.IsItemItsOwnContainer(ui))
                //    return ic;
                //else
                //    return null;
            }

            IVisual uiVisual = container as IVisual;

            uiVisual = VisualTree.VisualExtensions.GetVisualParent <IVisual>(uiVisual);

            return(GetItemsOwner(uiLogical as AvaloniaObject));
        }
Esempio n. 2
0
        /// <summary>
        /// returns the children by control
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="forceUsingTheVisualTreeHelper"></param>
        /// <returns></returns>
        public static IEnumerable <IControl> GetChildObjects(this IControl parent, bool forceUsingTheVisualTreeHelper = false)
        {
            if (parent == null)
            {
                yield break;
            }

            ILogical parentLogical = parent as ILogical;

            if (!forceUsingTheVisualTreeHelper && (parentLogical != null))
            {
                foreach (var item in LogicalExtensions.GetLogicalChildren(parentLogical))
                {
                    IControl avalonia = item as IControl;
                    if (avalonia != null)
                    {
                        yield return(item as IControl);
                    }
                }
            }
            else
            {
                IVisual visual = parent as IVisual;

                foreach (var item in VisualTree.VisualExtensions.GetVisualChildren(visual))
                {
                    IControl avalonia = item as IControl;
                    if (avalonia != null)
                    {
                        yield return(item as IControl);
                    }
                }
            }
        }