Ejemplo n.º 1
0
        private static void IterateVisualChildren(DependencyObject parent, HwndContentControlAutomationPeer.IteratorCallback callback)
        {
            if (parent == null)
            {
                return;
            }
            int childrenCount = VisualTreeHelper.GetChildrenCount(parent);

            for (int childIndex = 0; childIndex < childrenCount; ++childIndex)
            {
                DependencyObject child       = VisualTreeHelper.GetChild(parent, childIndex);
                UIElement        element     = child as UIElement;
                UIElement3D      uiElement3D = child as UIElement3D;
                AutomationPeer   peerForElement1;
                if (element != null && (peerForElement1 = UIElementAutomationPeer.CreatePeerForElement(element)) != null)
                {
                    callback(peerForElement1);
                }
                else
                {
                    AutomationPeer peerForElement2;
                    if (uiElement3D != null && (peerForElement2 = UIElement3DAutomationPeer.CreatePeerForElement((UIElement3D)child)) != null)
                    {
                        callback(peerForElement2);
                    }
                    else
                    {
                        HwndContentControlAutomationPeer.IterateVisualChildren(child, callback);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <inheritdoc />
        protected override List <AutomationPeer> GetChildrenCore()
        {
#pragma warning disable CS8619 // Nullability of reference types in value doesn't match target type.
            return(this.Owner.VisualChildrenRecursive()
                   .Select(CreatePeerForElement)
                   .Where(x => x != null)
                   .ToList());

#pragma warning restore CS8619 // Nullability of reference types in value doesn't match target type.

            AutomationPeer?CreatePeerForElement(DependencyObject o)
            {
                if (o is UIElement uiElement)
                {
                    return(UIElementAutomationPeer.CreatePeerForElement(uiElement));
                }

                if (o is UIElement3D uiElement3D)
                {
                    return(UIElement3DAutomationPeer.CreatePeerForElement(uiElement3D));
                }

                return(null);
            }
        }
Ejemplo n.º 3
0
#pragma warning restore CS8619 // Nullability of reference types in value doesn't match target type.

            static AutomationPeer?CreatePeerForElement(DependencyObject o)
            {
                return(o switch
                {
                    UIElement uiElement => UIElementAutomationPeer.CreatePeerForElement(uiElement),
                    UIElement3D uiElement3D => UIElement3DAutomationPeer.CreatePeerForElement(uiElement3D),
                    _ => null,
                });
        /// <inheritdoc />
        protected override List <AutomationPeer> GetChildrenCore()
        {
            AutomationPeer CreatePeerForElement(DependencyObject o)
            {
                if (o is UIElement uiElement)
                {
                    return(UIElementAutomationPeer.CreatePeerForElement(uiElement));
                }

                if (o is UIElement3D uiElement3D)
                {
                    return(UIElement3DAutomationPeer.CreatePeerForElement(uiElement3D));
                }

                return(null);
            }

            return(this.Owner.VisualChildrenRecursive()
                   .Select(CreatePeerForElement)
                   .Where(x => x != null)
                   .ToList());
        }