Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

IRawElementProviderFragment.Navigate(NavigateDirection) Method

Definition

Namespace:
System.Windows.Automation.Provider
Assembly:
UIAutomationProvider.dll

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Retrieves the UI Automation element in a specified direction within the tree.

public:
 System::Windows::Automation::Provider::IRawElementProviderFragment ^ Navigate(System::Windows::Automation::Provider::NavigateDirection direction);
public System.Windows.Automation.Provider.IRawElementProviderFragment Navigate(System.Windows.Automation.Provider.NavigateDirection direction);
abstract member Navigate : System.Windows.Automation.Provider.NavigateDirection -> System.Windows.Automation.Provider.IRawElementProviderFragment
Public Function Navigate (direction As NavigateDirection) As IRawElementProviderFragment

Parameters

direction
NavigateDirection

The direction in which to navigate.

Returns

The element in the specified direction, or null if there is no element in that direction.

Examples

The following example code shows the implementation of Navigate by a fragment root that has a single child element. Because the implementing element is a fragment root, it does not enable navigation to a parent element or sibling elements.

IRawElementProviderFragment IRawElementProviderFragment.Navigate(NavigateDirection direction)
{
 if ((direction == NavigateDirection.FirstChild)
 || (direction == NavigateDirection.LastChild)) 
 {
 // Return the provider that is the sole child of this one.
 return (IRawElementProviderFragment)ChildControl;
 }
 else
 {
 return null;
 };
}
Function Navigate(ByVal direction As NavigateDirection) As IRawElementProviderFragment _
 Implements IRawElementProviderFragment.Navigate

 If direction = NavigateDirection.FirstChild _
 OrElse direction = NavigateDirection.LastChild Then
 ' Return the provider that is the sole child of this one.
 Return CType(ChildControl, IRawElementProviderFragment)
 Else
 Return Nothing
 End If

End Function 'IRawElementProviderFragment.Navigate

The following example shows an implementation by a fragment that represents a single item within a list box. In this case, the element enables navigation to its parent and siblings, but not to any children.

/// <summary>
/// Navigate to adjacent elements in the automation tree.
/// </summary>
/// <param name="direction">Direction to navigate.</param>
/// <returns>The element in that direction, or null.</returns>
/// <remarks>
/// parentControl is the provider for the list box.
/// parentItems is the collection of list item providers.
/// </remarks>
public IRawElementProviderFragment Navigate(NavigateDirection direction)
{
 int myIndex = parentItems.IndexOf(this);
 if (direction == NavigateDirection.Parent)
 {
 return (IRawElementProviderFragment)parentControl;
 }
 else if (direction == NavigateDirection.NextSibling)
 {
 if (myIndex < parentItems.Count - 1)
 {
 return (IRawElementProviderFragment)parentItems[myIndex + 1];
 }
 else
 {
 return null;
 }
 }
 else if (direction == NavigateDirection.PreviousSibling)
 {
 if (myIndex > 0)
 {
 return (IRawElementProviderFragment)parentItems[myIndex - 1];
 }
 else
 {
 return null;
 }
 }
 else
 {
 return null;
 }
}
''' <summary>
''' Navigate to adjacent elements in the automation tree.
''' </summary>
''' <param name="direction">Direction to navigate.</param>
''' <returns>The element in that direction, or null.</returns>
''' <remarks>
''' parentControl is the provider for the list box.
''' parentItems is the collection of list item providers.
''' </remarks>
Public Function Navigate(ByVal direction As NavigateDirection) As IRawElementProviderFragment _
 Implements IRawElementProviderFragment.Navigate

 Dim myIndex As Integer = parentItems.IndexOf(Me)
 If direction = NavigateDirection.Parent Then
 Return DirectCast(parentControl, IRawElementProviderFragment)
 ElseIf direction = NavigateDirection.NextSibling Then
 If myIndex < parentItems.Count - 1 Then
 Return DirectCast(parentItems((myIndex + 1)), IRawElementProviderFragment)
 Else
 Return Nothing
 End If
 ElseIf direction = NavigateDirection.PreviousSibling Then
 If myIndex > 0 Then
 Return DirectCast(parentItems((myIndex - 1)), IRawElementProviderFragment)
 Else
 Return Nothing
 End If
 Else
 Return Nothing
 End If

End Function 'Navigate

Remarks

The UI Automation server's implementations of this method define the structure of the UI Automation element tree.

Navigation must be supported upward to the parent, downward to the first and last child, and laterally to the next and previous siblings, as applicable.

Each child node has only one parent and must be placed in the chain of siblings reached from the parent by FirstChild and LastChild.

Relationships among siblings must be identical in both directions: if A is B's PreviousSibling, then B is A's NextSibling. A FirstChild has no PreviousSibling, and a LastChild has no NextSibling.

Fragment roots do not enable navigation to a parent or siblings; navigation among fragment roots is handled by the default window providers. Elements in fragments must navigate only to other elements within that fragment.

Applies to

See also


Feedback

Was this page helpful?