Exemple #1
0
            /// <summary>
            ///  Returns the element in the specified direction.
            /// </summary>
            /// <param name="direction">Indicates the direction in which to navigate.</param>
            /// <returns>Returns the element in the specified direction.</returns>
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                int childCount = _owningListBox.Items.Count;

                if (childCount == 0)
                {
                    return(base.FragmentNavigate(direction));
                }

                return(direction switch
                {
                    UiaCore.NavigateDirection.FirstChild => GetChild(0),
                    UiaCore.NavigateDirection.LastChild => GetChild(childCount - 1),
                    _ => base.FragmentNavigate(direction),
                });
            /// <summary>
            ///  Request to return the element in the specified direction.
            /// </summary>
            /// <param name="direction">Indicates the direction in which to navigate.</param>
            /// <returns>Returns the element in the specified direction.</returns>
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (!_owningDropDownButton.Visible ||
                    _owningPropertyGrid?.SelectedGridEntry?.AccessibilityObject is not PropertyDescriptorGridEntryAccessibleObject parent)
                {
                    return(null);
                }

                return(direction switch
                {
                    UiaCore.NavigateDirection.Parent => parent,
                    UiaCore.NavigateDirection.NextSibling => parent.GetNextChild(this),
                    UiaCore.NavigateDirection.PreviousSibling => parent.GetPreviousChild(this),
                    _ => base.FragmentNavigate(direction),
                });
Exemple #3
0
        internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
        {
            if (direction == UiaCore.NavigateDirection.Parent &&
                _owningPropertyGrid.SelectedGridEntry != null &&
                _owningDropDownButton.Visible)
            {
                return(_owningPropertyGrid.SelectedGridEntry?.AccessibilityObject);
            }
            else if (direction == UiaCore.NavigateDirection.PreviousSibling)
            {
                return(_owningPropertyGrid.EditAccessibleObject);
            }

            return(base.FragmentNavigate(direction));
        }
            internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                switch (direction)
                {
                case UiaCore.NavigateDirection.FirstChild:
                    return(GetCalendarChildAccessibleObject(_calendarIndex, CalendarChildType.PreviousButton));

                case UiaCore.NavigateDirection.LastChild:
                    return(_owner.ShowTodayCircle
                            ? GetCalendarChildAccessibleObject(_calendarIndex, CalendarChildType.TodayLink)
                            : GetCalendarChildAccessibleObject(_calendarIndex, CalendarChildType.CalendarBody));
                }

                return(base.FragmentNavigate(direction));
            }
        internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
        {
            switch (direction)
            {
            case UiaCore.NavigateDirection.Parent:
                if (Owner is IDataGridViewEditingControl owner && owner.EditingControlDataGridView.EditingControl == owner)
                {
                    return(_parentAccessibleObject);
                }

                return(null);
            }

            return(base.FragmentNavigate(direction));
        }
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (_toolStripHostedControl is not null &&
                    _toolStripControlHost is not null)
                {
                    switch (direction)
                    {
                    case UiaCore.NavigateDirection.Parent:
                    case UiaCore.NavigateDirection.PreviousSibling:
                    case UiaCore.NavigateDirection.NextSibling:
                        return(_toolStripControlHost.AccessibilityObject.FragmentNavigate(direction));
                    }
                }

                return(base.FragmentNavigate(direction));
            }
Exemple #7
0
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                switch (direction)
                {
                case UiaCore.NavigateDirection.FirstChild:
                case UiaCore.NavigateDirection.LastChild:
                    // Don't show the inner menu while it is invisible.
                    // Otherwise it will affect accessibility tree,
                    // especially for items-controls that have not been created yet.
                    return(_owningToolStripOverflowButton.DropDown.Visible
                            ? _owningToolStripOverflowButton.DropDown.AccessibilityObject
                            : null);
                }

                return(base.FragmentNavigate(direction));
            }
Exemple #8
0
            /// <summary>
            ///  Returns the element in the specified direction.
            /// </summary>
            /// <param name="direction">Indicates the direction in which to navigate.</param>
            /// <returns>Returns the element in the specified direction.</returns>
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (Parent is not PropertyGridView.PropertyGridViewAccessibleObject parent)
                {
                    return(null);
                }

                return(direction switch
                {
                    UiaCore.NavigateDirection.Parent => Parent,
                    UiaCore.NavigateDirection.NextSibling => parent.GetNextCategory(_owningCategoryGridEntry),
                    UiaCore.NavigateDirection.PreviousSibling => parent.GetPreviousCategory(_owningCategoryGridEntry),
                    UiaCore.NavigateDirection.FirstChild => parent.GetFirstChildProperty(_owningCategoryGridEntry),
                    UiaCore.NavigateDirection.LastChild => parent.GetLastChildProperty(_owningCategoryGridEntry),
                    _ => base.FragmentNavigate(direction),
                });
            // If the control is used as an item of a ToolStrip via ToolStripControlHost,
            // its accessible object should provide info about the owning ToolStrip and items-siblings
            // to build a correct ToolStrip accessibility tree.
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (Owner.ToolStripControlHost is not ToolStripControlHost host)
                {
                    return(base.FragmentNavigate(direction));
                }

                if (direction == UiaCore.NavigateDirection.Parent ||
                    direction == UiaCore.NavigateDirection.PreviousSibling ||
                    direction == UiaCore.NavigateDirection.NextSibling)
                {
                    return(host.AccessibilityObject.FragmentNavigate(direction));
                }

                return(base.FragmentNavigate(direction));
            }
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                ListViewGroupAccessibleObject?owningGroupAccessibleObject = (ListViewGroupAccessibleObject?)_owningGroup?.AccessibilityObject;

                switch (direction)
                {
                case UiaCore.NavigateDirection.Parent:
                    return(owningGroupAccessibleObject ?? _owningListView.AccessibilityObject);

                case UiaCore.NavigateDirection.NextSibling:
                    if (owningGroupAccessibleObject is null)
                    {
                        ListViewAccessibleObject listViewAccessibilityObject = (ListViewAccessibleObject)_owningListView.AccessibilityObject;
                        return(listViewAccessibilityObject.GetNextChild(this));
                    }

                    return(owningGroupAccessibleObject.GetNextChild(this));

                case UiaCore.NavigateDirection.PreviousSibling:
                    if (owningGroupAccessibleObject is null)
                    {
                        ListViewAccessibleObject listViewAccessibilityObject = (ListViewAccessibleObject)_owningListView.AccessibilityObject;
                        return(listViewAccessibilityObject.GetPreviousChild(this));
                    }

                    return(owningGroupAccessibleObject.GetPreviousChild(this));

                case UiaCore.NavigateDirection.FirstChild:
                    if (_owningItem.SubItems.Count > 0)
                    {
                        return(GetChild(0));
                    }

                    break;

                case UiaCore.NavigateDirection.LastChild:
                    int subItemsCount = _owningItem.SubItems.Count;
                    if (subItemsCount > 0)
                    {
                        return(GetChild(subItemsCount - 1));
                    }

                    break;
                }

                return(base.FragmentNavigate(direction));
            }
Exemple #11
0
            /// <summary>
            ///  Returns the element in the specified direction.
            /// </summary>
            /// <param name="direction">Indicates the direction in which to navigate.</param>
            /// <returns>Returns the element in the specified direction.</returns>
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (direction == UiaCore.NavigateDirection.FirstChild)
                {
                    return(GetChildFragment(0));
                }
                else if (direction == UiaCore.NavigateDirection.LastChild)
                {
                    var childFragmentCount = GetChildFragmentCount();
                    if (childFragmentCount > 0)
                    {
                        return(GetChildFragment(childFragmentCount - 1));
                    }
                }

                return(base.FragmentNavigate(direction));
            }
            internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                switch (direction)
                {
                case UiaCore.NavigateDirection.Parent:
                    return(Parent);

                case UiaCore.NavigateDirection.NextSibling:
                    return(GetNextSibling());

                case UiaCore.NavigateDirection.PreviousSibling:
                    return(GetPreviousSibling());

                default:
                    return(base.FragmentNavigate(direction));
                }
            }
Exemple #13
0
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (_owner.OwnerScrollButton?.Parent is not ToolStripDropDownMenu toolStripDropDownMenu)
                {
                    return(null);
                }

                return(direction switch
                {
                    UiaCore.NavigateDirection.Parent => toolStripDropDownMenu.AccessibilityObject,
                    UiaCore.NavigateDirection.NextSibling
                    => _owner.UpDirection && toolStripDropDownMenu.Items.Count > 0
                            ? toolStripDropDownMenu.Items[0].AccessibilityObject
                            : null,
                    UiaCore.NavigateDirection.PreviousSibling
                    => !_owner.UpDirection && toolStripDropDownMenu.Items.Count > 0
                            ? toolStripDropDownMenu.Items[^ 1].AccessibilityObject
Exemple #14
0
            /// <summary>
            ///  Request to return the element in the specified direction.
            /// </summary>
            /// <param name="direction">Indicates the direction in which to navigate.</param>
            /// <returns>Returns the element in the specified direction.</returns>
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (_parentPropertyGrid.IsHandleCreated &&
                    _parentPropertyGrid.AccessibilityObject is PropertyGrid.PropertyGridAccessibleObject propertyGridAccessibleObject)
                {
                    UiaCore.IRawElementProviderFragment navigationTarget = propertyGridAccessibleObject.ChildFragmentNavigate(this, direction);
                    if (navigationTarget is not null)
                    {
                        return(navigationTarget);
                    }
                }

                return(direction switch
                {
                    UiaCore.NavigateDirection.FirstChild => IsSortedByCategories?GetCategory(0) : GetChild(0),
                        UiaCore.NavigateDirection.LastChild => IsSortedByCategories?GetLastCategory() : GetLastChild(),
                            _ => base.FragmentNavigate(direction)
                });
Exemple #15
0
            internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (!_owner.IsHandleCreated)
                {
                    return(null);
                }

                return(direction switch
                {
                    UiaCore.NavigateDirection.Parent => _owner.AccessibilityObject,
                    UiaCore.NavigateDirection.PreviousSibling =>
                    _owner.DropDownStyle == ComboBoxStyle.DropDownList
                            ? _owner.ChildTextAccessibleObject
                            : _owner.ChildEditAccessibleObject,
                    // We should return null for NextSibling because it is always the last item in the tree
                    UiaCore.NavigateDirection.NextSibling => null,
                    _ => base.FragmentNavigate(direction)
                });
Exemple #16
0
            /// <summary>
            ///  Returns the element in the specified direction.
            /// </summary>
            /// <param name="direction">Indicates the direction in which to navigate.</param>
            /// <returns>Returns the element in the specified direction.</returns>
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (!_owningComboBox.IsHandleCreated)
                {
                    return(null);
                }

                switch (direction)
                {
                case UiaCore.NavigateDirection.FirstChild:
                    return(GetFirstChild());

                case UiaCore.NavigateDirection.LastChild:
                    return(GetLastChild());

                default:
                    return(base.FragmentNavigate(direction));
                }
            }
Exemple #17
0
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                switch (direction)
                {
                case UiaCore.NavigateDirection.Parent:
                    DataGridViewCell currentCell = _ownerDataGridView.CurrentCell;
                    if (currentCell is not null && _ownerDataGridView.IsCurrentCellInEditMode)
                    {
                        return(currentCell.AccessibilityObject);
                    }
                    break;

                case UiaCore.NavigateDirection.FirstChild:
                case UiaCore.NavigateDirection.LastChild:
                    return(_ownerDataGridView.EditingControlAccessibleObject);
                }

                return(null);
            }
            /// <summary>
            ///  Request to return the element in the specified direction.
            /// </summary>
            /// <param name="direction">Indicates the direction in which to navigate.</param>
            /// <returns>Returns the element in the specified direction.</returns>
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (_parentPropertyGrid.IsHandleCreated &&
                    _parentPropertyGrid.AccessibilityObject is PropertyGrid.PropertyGridAccessibleObject propertyGridAccessibleObject)
                {
                    UiaCore.IRawElementProviderFragment navigationTarget = propertyGridAccessibleObject.ChildFragmentNavigate(this, direction);
                    if (navigationTarget is not null)
                    {
                        return(navigationTarget);
                    }
                }

                if (_owningPropertyGridView.OwnerGrid.SortedByCategories)
                {
                    switch (direction)
                    {
                    case UiaCore.NavigateDirection.FirstChild:
                        return(GetFirstCategory());

                    case UiaCore.NavigateDirection.LastChild:
                        return(GetLastCategory());
                    }
                }
                else
                {
                    switch (direction)
                    {
                    case UiaCore.NavigateDirection.FirstChild:
                        return(GetChild(0));

                    case UiaCore.NavigateDirection.LastChild:
                        int childCount = GetChildCount();
                        if (childCount > 0)
                        {
                            return(GetChild(childCount - 1));
                        }

                        return(null);
                    }
                }

                return(base.FragmentNavigate(direction));
            }
Exemple #19
0
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                AccessibleObject _parentInternal = _owningListView.AccessibilityObject;

                switch (direction)
                {
                case UiaCore.NavigateDirection.Parent:
                    return(_parentInternal);

                case UiaCore.NavigateDirection.NextSibling:
                    int childIndex = _parentInternal.GetChildIndex(this);
                    return(childIndex == -1 ? null : _parentInternal.GetChild(childIndex + 1));

                case UiaCore.NavigateDirection.PreviousSibling:
                    return(_parentInternal.GetChild(_parentInternal.GetChildIndex(this) - 1));
                }

                return(base.FragmentNavigate(direction));
            }
Exemple #20
0
            internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                switch (direction)
                {
                case UiaCore.NavigateDirection.FirstChild:
                    return(GetChildFragment(0));

                case UiaCore.NavigateDirection.LastChild:
                    var childFragmentCount = GetChildFragmentCount();
                    if (childFragmentCount > 0)
                    {
                        return(GetChildFragment(childFragmentCount - 1));
                    }

                    break;
                }

                return(base.FragmentNavigate(direction));
            }
            internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                switch (direction)
                {
                case UiaCore.NavigateDirection.Parent:
                    Debug.WriteLine("Edit parent " + _owner.AccessibilityObject.GetPropertyValue(UiaCore.UIA.ControlTypePropertyId));
                    return(_owner.AccessibilityObject);

                case UiaCore.NavigateDirection.NextSibling:
                    if (_owner.DropDownStyle == ComboBoxStyle.Simple)
                    {
                        return(null);
                    }

                    if (_owner.AccessibilityObject is ComboBoxAccessibleObject comboBoxAccessibleObject)
                    {
                        int comboBoxChildFragmentCount = comboBoxAccessibleObject.GetChildFragmentCount();
                        if (comboBoxChildFragmentCount > 1)
                        {     // DropDown button is next;
                            return(comboBoxAccessibleObject.GetChildFragment(comboBoxChildFragmentCount - 1));
                        }
                    }

                    return(null);

                case UiaCore.NavigateDirection.PreviousSibling:
                    comboBoxAccessibleObject = _owner.AccessibilityObject as ComboBoxAccessibleObject;
                    if (comboBoxAccessibleObject != null)
                    {
                        AccessibleObject firstComboBoxChildFragment = comboBoxAccessibleObject.GetChildFragment(0);
                        if (RuntimeId != firstComboBoxChildFragment.RuntimeId)
                        {
                            return(firstComboBoxChildFragment);
                        }
                    }

                    return(null);

                default:
                    return(base.FragmentNavigate(direction));
                }
            }
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (!_owningListView.IsHandleCreated)
                {
                    return(null);
                }

                int childCount = GetChildCount();

                if (childCount == 0)
                {
                    return(null);
                }

                return(direction switch
                {
                    UiaCore.NavigateDirection.FirstChild => GetChild(0),
                    UiaCore.NavigateDirection.LastChild => GetChild(childCount - 1),
                    _ => base.FragmentNavigate(direction)
                });
Exemple #23
0
            internal override UiaCore.IRawElementProviderFragment? FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (Owner is null)
                {
                    throw new InvalidOperationException(SR.DataGridViewCellAccessibleObject_OwnerNotSet);
                }

                if (Owner.OwningRow is null)
                {
                    return(null);
                }

                return(direction switch
                {
                    UiaCore.NavigateDirection.Parent => Owner.OwningRow.AccessibilityObject,
                    UiaCore.NavigateDirection.NextSibling =>
                    (Owner.DataGridView is not null && Owner.DataGridView.Columns.GetColumnCount(DataGridViewElementStates.Visible) > 0)
                                ? Owner.OwningRow.AccessibilityObject.GetChild(1) // go to the next sibling
                                : null,
                    _ => null,
                });
Exemple #24
0
            internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                int childCount = _owningListBox.Items.Count;

                if (childCount == 0)
                {
                    return(null);
                }

                switch (direction)
                {
                case UiaCore.NavigateDirection.FirstChild:
                    return(GetChild(0));

                case UiaCore.NavigateDirection.LastChild:
                    return(GetChild(childCount - 1));

                default:
                    return(base.FragmentNavigate(direction));
                }
            }
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (!_owningListView.IsHandleCreated || _owningListView.VirtualMode)
                {
                    return(null);
                }

                switch (direction)
                {
                case UiaCore.NavigateDirection.Parent:
                    return(_owningListView.AccessibilityObject);

                case UiaCore.NavigateDirection.NextSibling:
                    return((_owningListView.AccessibilityObject as ListView.ListViewAccessibleObject)?.GetNextChild(this));

                case UiaCore.NavigateDirection.PreviousSibling:
                    return((_owningListView.AccessibilityObject as ListView.ListViewAccessibleObject)?.GetPreviousChild(this));

                case UiaCore.NavigateDirection.FirstChild:
                    int childCount = GetChildCount();
                    if (childCount > 0)
                    {
                        return(GetChild(0));
                    }

                    return(null);

                case UiaCore.NavigateDirection.LastChild:
                    childCount = GetChildCount();
                    if (childCount > 0)
                    {
                        return(GetChild(childCount - 1));
                    }

                    return(null);

                default:
                    return(null);
                }
            }
Exemple #26
0
            internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (_owner == null)
                {
                    throw new InvalidOperationException(SR.DataGridViewCellAccessibleObject_OwnerNotSet);
                }

                if (_owner.OwningColumn == null || _owner.OwningRow == null)
                {
                    return(null);
                }

                switch (direction)
                {
                case UiaCore.NavigateDirection.Parent:
                    return(_owner.OwningRow.AccessibilityObject);

                case UiaCore.NavigateDirection.NextSibling:
                    return(NavigateForward(false));

                case UiaCore.NavigateDirection.PreviousSibling:
                    return(NavigateBackward(false));

                case UiaCore.NavigateDirection.FirstChild:
                case UiaCore.NavigateDirection.LastChild:
                    if (_owner.DataGridView.CurrentCell == _owner &&
                        _owner.DataGridView.IsCurrentCellInEditMode &&
                        _owner.DataGridView.EditingControl != null)
                    {
                        return(_child);
                    }
                    break;

                default:
                    return(null);
                }

                return(null);
            }
            /// <summary>
            ///  Request to return the element in the specified direction.
            /// </summary>
            /// <param name="direction">Indicates the direction in which to navigate.</param>
            /// <returns>Returns the element in the specified direction.</returns>
            internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (!_owningComboBox.IsHandleCreated)
                {
                    return(null);
                }

                switch (direction)
                {
                case UiaCore.NavigateDirection.Parent:
                    return(_owningComboBox.AccessibilityObject);

                case UiaCore.NavigateDirection.FirstChild:
                    return(GetChildFragment(0));

                case UiaCore.NavigateDirection.LastChild:
                    var childFragmentCount = GetChildFragmentCount();
                    if (childFragmentCount > 0)
                    {
                        return(GetChildFragment(childFragmentCount - 1));
                    }

                    return(null);

                case UiaCore.NavigateDirection.NextSibling:
                    return(_owningComboBox.DropDownStyle == ComboBoxStyle.DropDownList
                            ? _owningComboBox.ChildTextAccessibleObject
                            : _owningComboBox.ChildEditAccessibleObject);

                case UiaCore.NavigateDirection.PreviousSibling:
                    // A workaround for an issue with an Inspect not responding. It also simulates native control behavior.
                    return(_owningComboBox.DropDownStyle == ComboBoxStyle.Simple
                            ? _owningComboBox.ChildListAccessibleObject
                            : null);

                default:
                    return(base.FragmentNavigate(direction));
                }
            }
Exemple #28
0
            internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (direction == UiaCore.NavigateDirection.Parent)
                {
                    return(_owner.AccessibilityObject);
                }
                else if (direction == UiaCore.NavigateDirection.PreviousSibling)
                {
                    if (_owner.AccessibilityObject is ComboBoxAccessibleObject comboBoxAccessibleObject)
                    {
                        int comboBoxChildFragmentCount = comboBoxAccessibleObject.GetChildFragmentCount();
                        if (comboBoxChildFragmentCount > 1)
                        { // Text or edit is previous;
                            return(comboBoxAccessibleObject.GetChildFragment(comboBoxChildFragmentCount - 1));
                        }
                    }

                    return(null);
                }

                return(base.FragmentNavigate(direction));
            }
            internal override UiaCore.IRawElementProviderFragment? FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                switch (direction)
                {
                case UiaCore.NavigateDirection.Parent:
                    return(Parent);

                case UiaCore.NavigateDirection.NextSibling:
                    if (Parent.GetChildCount() > 1)
                    {
                        if (_ownerDataGridView is null)
                        {
                            throw new InvalidOperationException(SR.DataGridViewTopRowAccessibleObject_OwnerNotSet);
                        }

                        return(_ownerDataGridView.Rows.Count == 0 ? null : Parent.GetChild(1));
                    }

                    break;

                case UiaCore.NavigateDirection.FirstChild:
                    if (GetChildCount() > 0)
                    {
                        return(GetChild(0));
                    }

                    break;

                case UiaCore.NavigateDirection.LastChild:
                    if (GetChildCount() > 0)
                    {
                        return(GetChild(GetChildCount() - 1));
                    }

                    break;
                }

                return(null);
            }
            internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction)
            {
                if (Owner.OwningColumn == null)
                {
                    return(null);
                }

                switch (direction)
                {
                case UiaCore.NavigateDirection.Parent:
                    return(Parent);

                case UiaCore.NavigateDirection.NextSibling:
                    return(NavigateForward());

                case UiaCore.NavigateDirection.PreviousSibling:
                    return(NavigateBackward());

                default:
                    return(null);
                }
            }