Determines the next element that would receive focus relative to this element for a provided focus movement direction, but does not actually move the focus.
Assembly: PresentationFramework (in PresentationFramework.dll)
'Declaration Public Overrides NotOverridable Function PredictFocus ( _ direction As FocusNavigationDirection _ ) As DependencyObject
- Type: System.Windows.Input.FocusNavigationDirection
The direction for which a prospective focus change should be determined.
Return ValueType: System.Windows.DependencyObject
The next element that focus would move to if focus were actually traversed. May return Nothing if focus cannot be moved relative to this element for the provided direction.
The following example implements a handler that handles several possible button inputs, each button representing a possible FocusNavigationDirection. The handler tracks the element with current keyboard focus, and calls on that element, and specifies the appropriate FocusNavigationDirection as initialization for the TraversalRequest type parameter provided. Instead of moving to that element as MoveFocus would do, the handler changes the physical dimensions of the predicted focus destination for visualization purposes.
Private Sub OnPredictFocus(ByVal sender As Object, ByVal e As RoutedEventArgs) Dim predictionElement As DependencyObject = Nothing Dim elementWithFocus As UIElement = TryCast(Keyboard.FocusedElement, UIElement) If elementWithFocus IsNot Nothing Then ' Only these four directions are currently supported ' by PredictFocus, so we need to filter on these only. If (_focusMoveValue = FocusNavigationDirection.Up) OrElse (_focusMoveValue = FocusNavigationDirection.Down) OrElse (_focusMoveValue = FocusNavigationDirection.Left) OrElse (_focusMoveValue = FocusNavigationDirection.Right) Then ' Get the element which would receive focus if focus were changed. predictionElement = elementWithFocus.PredictFocus(_focusMoveValue) Dim controlElement As Control = TryCast(predictionElement, Control) ' If a ContentElement. If controlElement IsNot Nothing Then controlElement.Foreground = Brushes.DarkBlue controlElement.FontSize += 10 controlElement.FontWeight = FontWeights.ExtraBold ' Fields used to reset the UI when the mouse ' button is released. _focusPredicted = True _predictedControl = controlElement End If End If End If End Sub