NavigationService Class
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Provides methods, properties, and events to support navigation within a Silverlight application.
Inheritance Hierarchy
System.Object
System.Windows.Navigation.NavigationService
Namespace: System.Windows.Navigation
Assembly: System.Windows.Controls.Navigation (in System.Windows.Controls.Navigation.dll)
Syntax
'Declaration
Public NotInheritable Class NavigationService
public sealed class NavigationService
The NavigationService type exposes the following members.
Properties
Name | Description | |
---|---|---|
CanGoBack | Gets a value that indicates whether there is at least one entry in the back navigation history. | |
CanGoForward | Gets a value that indicates whether there is at least one entry in the forward navigation history. | |
CurrentSource | Gets the uniform resource identifier (URI) of the content that is currently displayed. | |
Source | Gets or sets the uniform resource identifier (URI) of the current content or the content that is being navigated to. |
Top
Methods
Name | Description | |
---|---|---|
Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.) | |
GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
GoBack | Navigates to the most recent entry in the back navigation history, or throws an exception if no entry exists in back navigation. | |
GoForward | Navigates to the most recent entry in the forward navigation history, or throws an exception if no entry exists in forward navigation. | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
Navigate | Navigates to the content specified by the uniform resource identifier (URI). | |
Refresh | Reloads the current page. | |
StopLoading | Stops asynchronous navigations that have not yet been processed. | |
ToString | Returns a string that represents the current object. (Inherited from Object.) |
Top
Events
Name | Description | |
---|---|---|
FragmentNavigation | Occurs when navigation to a content fragment begins. | |
Navigated | Occurs when the content that is being navigated to has been found and is available. | |
Navigating | Occurs when a new navigation is requested. | |
NavigationFailed | Occurs when an error is encountered while navigating to the requested content. | |
NavigationStopped | Occurs when the StopLoading method is called, or when a new navigation is requested while the current navigation is in progress. |
Top
Remarks
You use the NavigationService class from within a Silverlight page. It enables you to access the navigation service used by the hosting frame and launch new navigation requests. You can retrieve the navigation service through the NavigationService property of the Page class.
When navigating from within the frame, you use the navigation methods on the frame. The Frame class contains many of the same methods and properties as the NavigationService class.
Examples
The following example shows a Silverlight page that retrieves data from a data service and displays that data. The page displays information about a product based on a value in the query string. The OnNavigatedTo method is overridden to obtain a query string value from the NavigationContext object. The NavigationService object for this page is accessed to determine if forward and back navigation is available.
Partial Public Class ProductDetail
Inherits Page
Public Sub New()
InitializeComponent()
End Sub
Protected Overrides Sub OnNavigatedTo(ByVal e As NavigationEventArgs)
GetProductDetail()
SetButtonVisibility()
End Sub
Private Sub SetButtonVisibility()
If (NavigationService.CanGoBack) Then
BackNavButton.Visibility = Visibility.Visible
Else
BackNavButton.Visibility = Visibility.Collapsed
End If
If (NavigationService.CanGoForward) Then
ForwardNavButton.Visibility = Visibility.Visible
Else
ForwardNavButton.Visibility = Visibility.Collapsed
End If
End Sub
Private Sub BackNavButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
If (NavigationService.CanGoBack) Then
NavigationService.GoBack()
End If
End Sub
Private Sub ForwardNavButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
If (NavigationService.CanGoForward) Then
NavigationService.GoForward()
End If
End Sub
Private Sub GetProductDetail()
Dim productID As String
Dim svcContext As DataServiceContext
svcContext = New DataServiceContext(New Uri("AdventureWorks.svc", _
UriKind.Relative))
If (Me.NavigationContext.QueryString.ContainsKey("ProductId")) Then
productID = Me.NavigationContext.QueryString("ProductId")
Else
productID = App.Current.Resources("FeaturedProductID").ToString()
End If
svcContext.BeginExecute(Of Product)(New Uri("Product(" + productID + ")", _
UriKind.Relative), AddressOf loadProductCallback, svcContext)
End Sub
Private Sub loadProductCallback(ByVal asyncResult As IAsyncResult)
Dim context As DataServiceContext
context = asyncResult.AsyncState
ListBox1.DataContext = context.EndExecute(Of Product)(asyncResult)
End Sub
End Class
public partial class ProductDetail : Page
{
public ProductDetail()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
GetProductDetail();
SetButtonVisibility();
}
private void SetButtonVisibility()
{
if (NavigationService.CanGoBack)
{
BackNavButton.Visibility = Visibility.Visible;
}
else
{
BackNavButton.Visibility = Visibility.Collapsed;
}
if (NavigationService.CanGoForward)
{
ForwardNavButton.Visibility = Visibility.Visible;
}
else
{
ForwardNavButton.Visibility = Visibility.Collapsed;
}
}
private void BackNavButton_Click(object sender, RoutedEventArgs e)
{
if (NavigationService.CanGoBack)
{
NavigationService.GoBack();
}
}
private void ForwardNavButton_Click(object sender, RoutedEventArgs e)
{
if (NavigationService.CanGoForward)
{
NavigationService.GoForward();
}
}
private void GetProductDetail()
{
string productID;
DataServiceContext svcContext =
new DataServiceContext(new Uri("AdventureWorks.svc", UriKind.Relative));
if (this.NavigationContext.QueryString.ContainsKey("ProductId"))
{
productID = this.NavigationContext.QueryString["ProductId"];
}
else
{
productID = App.Current.Resources["FeaturedProductID"].ToString();
}
svcContext.BeginExecute<Product>(new Uri("Product(" + productID + ")",
UriKind.Relative), loadProductCallback, svcContext);
}
private void loadProductCallback(IAsyncResult asyncResult)
{
DataServiceContext context = asyncResult.AsyncState as DataServiceContext;
ListBox1.DataContext = context.EndExecute<Product>(asyncResult);
}
}
Version Information
Silverlight
Supported in: 5, 4, 3
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.