private static bool DoesHideDescendants(UIElement element)
        {
            ImportantForAccessibility importantForAccessibility = GetImportantForAccessibilityAttached(element);
            bool isAccessibilityLabelSet = GetAccessibilityLabelAttached(element) != null;

            return(importantForAccessibility == ImportantForAccessibility.Yes ||
                   importantForAccessibility == ImportantForAccessibility.NoHideDescendants ||
                   (importantForAccessibility == ImportantForAccessibility.Auto && isAccessibilityLabelSet == true));
        }
 /// <summary>
 /// Sets the ImportantForAccessibility property for <paramref name="uiElement"/>.
 /// It uses AutomationProperties.AccessibilityView to expose the element and its children
 /// to narrator. ImportantForAccessibility value is stored as an attached property.
 /// </summary>
 /// <param name="uiElement">Element which ImportantForAccessibility property is set.</param>
 /// <param name="importantForAccessibility">The new value of ImportantForAccessibility property.</param>
 public static void SetImportantForAccessibility(UIElement uiElement, ImportantForAccessibility importantForAccessibility)
 {
     // Check if property is already set to requested value.
     if (GetImportantForAccessibilityAttached(uiElement) == importantForAccessibility)
     {
         return;
     }
     SetImportantForAccessibilityAttached(uiElement, importantForAccessibility);
     UpdateName(uiElement);
     UpdateAccessibilityViewIfNeeded(uiElement);
 }
Esempio n. 3
0
        /// <summary>
        /// Sets the ImportantForAccessibility property for <paramref name="uiElement"/>.
        /// It uses AutomationProperties.AccessibilityView to expose the element and its children
        /// to narrator. ImportantForAccessibility value is stored as an attached-like property.
        /// </summary>
        /// <param name="uiElement">Element which ImportantForAccessibility property is set.</param>
        /// <param name="importantForAccessibility">The new value of ImportantForAccessibility property.</param>
        public static void SetImportantForAccessibility(UIElement uiElement, ImportantForAccessibility importantForAccessibility)
        {
            // Check if property is already set to requested value.
            if (GetImportantForAccessibilityProp(uiElement) == importantForAccessibility)
            {
                return;
            }
            SetImportantForAccessibilityProp(uiElement, importantForAccessibility);

            // Mark element as dirty
            MarkElementDirty(uiElement);
        }
Esempio n. 4
0
        void UpdateAccessibilityImportance(Page page, ImportantForAccessibility importantForAccessibility, bool forceFocus)
        {
            var pageRenderer = Android.Platform.GetRenderer(page);

            if (pageRenderer?.View == null)
            {
                return;
            }
            pageRenderer.View.ImportantForAccessibility = importantForAccessibility;
            if (forceFocus)
            {
                pageRenderer.View.SendAccessibilityEvent(global::Android.Views.Accessibility.EventTypes.ViewFocused);
            }
        }
Esempio n. 5
0
        void UpdateAccessibilityImportance(Page page, ImportantForAccessibility importantForAccessibility, bool forceFocus)
        {
            var pageRenderer = page.Handler as INativeViewHandler;

            if (pageRenderer?.NativeView == null)
            {
                return;
            }
            pageRenderer.NativeView.ImportantForAccessibility = importantForAccessibility;
            if (forceFocus)
            {
                pageRenderer.NativeView.SendAccessibilityEvent(global::Android.Views.Accessibility.EventTypes.ViewFocused);
            }
        }
        /// <summary>
        /// Sets AccessibilityView property for <paramref name="element"/> and its children according to
        /// the element's <paramref name="importantForAccessibility"/> property and
        /// <see cref="AccessibilityLabelAttachedProperty"/> values.
        /// </summary>
        /// <param name="element"></param>
        /// <param name="elementPeer"></param>
        /// <param name="importantForAccessibility"></param>
        private static void UpdateAccessibilityViewForUIElement(UIElement element, AutomationPeer elementPeer, ImportantForAccessibility importantForAccessibility)
        {
            switch (importantForAccessibility)
            {
            case ImportantForAccessibility.Auto when GetAccessibilityLabelAttached(element) == null:
                element.ClearValue(AutomationProperties.AccessibilityViewProperty);

                SetChildrenAccessibilityViewFromImportantForAccessibility(elementPeer);
                break;

            case ImportantForAccessibility.Auto when GetAccessibilityLabelAttached(element) != null:
            case ImportantForAccessibility.Yes:
                var currentAccessibilityView = AutomationProperties.GetAccessibilityView(element);

                AutomationProperties.SetAccessibilityView(element, AccessibilityView.Content);
                // Generate the label in case the element was hidden.
                if (currentAccessibilityView == AccessibilityView.Raw)
                {
                    UpdateName(element);
                }
                SetChildrenAccessibilityView(elementPeer, AccessibilityView.Raw);
                break;

            case ImportantForAccessibility.No:
                AutomationProperties.SetAccessibilityView(element, AccessibilityView.Raw);
                SetChildrenAccessibilityViewFromImportantForAccessibility(elementPeer);
                break;

            case ImportantForAccessibility.NoHideDescendants:
                AutomationProperties.SetAccessibilityView(element, AccessibilityView.Raw);
                SetChildrenAccessibilityView(elementPeer, AccessibilityView.Raw);
                break;

            default:
                break;
            }
        }
 /// <summary>
 /// ImportantForAccessibilityAttached property setter.
 /// </summary>
 /// <param name="element"></param>
 /// <param name="value"></param>
 private static void SetImportantForAccessibilityAttached(UIElement element, ImportantForAccessibility value)
 {
     element.SetValue(ImportantForAccessibilityAttachedProperty, value);
 }
        /// <summary>
        /// Sets AccessibilityView property for <paramref name="element"/> and its children according to
        /// the element's <paramref name="importantForAccessibility"/> property and
        /// <see cref="AccessibilityLabelAttachedProperty"/> values.
        /// </summary>
        /// <param name="element"></param>
        /// <param name="elementPeer"></param>
        /// <param name="importantForAccessibility"></param>
        private static void UpdateAccessibilityViewForUIElement(UIElement element, AutomationPeer elementPeer, ImportantForAccessibility importantForAccessibility)
        {
            switch (importantForAccessibility)
            {
            case ImportantForAccessibility.Auto when GetAccessibilityLabelAttached(element) == null:
                element.ClearValue(AutomationProperties.AccessibilityViewProperty);

                SetChildrenAccessibilityViewFromImportantForAccessibility(elementPeer);
                break;

            case ImportantForAccessibility.Auto when GetAccessibilityLabelAttached(element) != null:
            case ImportantForAccessibility.Yes:
                AutomationProperties.SetAccessibilityView(element, AccessibilityView.Content);

                SetChildrenAccessibilityView(elementPeer, AccessibilityView.Raw);
                break;

            case ImportantForAccessibility.No:
                AutomationProperties.SetAccessibilityView(element, AccessibilityView.Raw);
                SetChildrenAccessibilityViewFromImportantForAccessibility(elementPeer);
                break;

            case ImportantForAccessibility.NoHideDescendants:
                AutomationProperties.SetAccessibilityView(element, AccessibilityView.Raw);
                SetChildrenAccessibilityView(elementPeer, AccessibilityView.Raw);
                break;

            default:
                break;
            }
        }
Esempio n. 9
0
 private static void SetImportantForAccessibilityProp(UIElement element, ImportantForAccessibility value)
 {
     EnsureElementAccessibilityContext(element).ImportantForAccessibilityProp = value;
 }