# NavigationBehavior
RadScheduleView's NavigationBehavior is responsible for handling the keyboard navigation. The control handles the KeyDown event for the following keys: Tab, PageUp, PageDown, Home, End and all of the arrow keys. The default navigation logic of the control is implemented in the DefaultNavigationBehavior class.
## Implementing Custom NavigationBehavior
In order to modify the default NavigationBehavior of the control, you can create a class inheriting DefaultNavigationBehavior. It exposes a single virtual method - Navigate, which is called when one of the navigation keys is pressed. This method receives NavigationData and NavigationDirection parameters. The NavigationData class exposes a property of type ServiceProvider through which you can get information that you might need (such as selected slots and appointments). Example 1 demonstrates how you can prevent the navigation in some scenarios and use the SlotSelectionService.
Example 1: Custom NavigationBehavior
public class CustomNavigationBehavior : DefaultNavigationBehavior
{
public override void Navigate(NavigationData data, NavigationDirection direction)
{
// Prevent navigation for the Home key
if (direction == NavigationDirection.First)
{
return;
}
// Prevent navigation for the End key
else if (direction == NavigationDirection.Last)
{
return;
}
var slotSelectionService = data.ServiceProvider.GetService<SlotSelectionService>();
var currentSlot = slotSelectionService.GetSelection();
if(currentSlot != null)
{
// Prevent navigation to the right, if we have selected the slot for 24th of September
if(currentSlot.End.Month == 9 && currentSlot.End.Day == 24 && direction == NavigationDirection.Right)
{
return;
}
}
base.Navigate(data, direction);
}
}
Public Class CustomNavigationBehavior
Inherits DefaultNavigationBehavior
Public Overrides Sub Navigate(ByVal data As NavigationData, ByVal direction As NavigationDirection)
' Prevent navigation for the Home key
If direction Is NavigationDirection.First Then
Return
' Prevent navigation for the End key
ElseIf direction Is NavigationDirection.Last Then
Return
End If
Dim slotSelectionService = data.ServiceProvider.GetService(Of SlotSelectionService)()
Dim currentSlot = slotSelectionService.GetSelection()
If currentSlot IsNot Nothing Then
' Prevent navigation to the right, if we have selected the slot for 24th of September
If currentSlot.End.Month = 9 AndAlso currentSlot.End.Day = 24 AndAlso direction Is NavigationDirection.Right Then
Return
End If
End If
MyBase.Navigate(data, direction)
End Sub
End Class
Example 2: Applying the custom NavigationBehavior
<telerik:RadScheduleView>
<telerik:RadScheduleView.NavigationBehavior>
<!-- The namespace "local" refers to the namespace where the CustomNavigationBehavior is defined -->
<local:CustomNavigationBehavior />
</telerik:RadScheduleView.NavigationBehavior>
</telerik:RadScheduleView>