FrameworkElement.PredictFocus(FocusNavigationDirection) Méthode

Définition

Détermine l'élément suivant qui recevrait le focus relatif à cet élément pour une direction du déplacement du focus fournie, mais ne déplace pas réellement le focus.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.

public:
 override System::Windows::DependencyObject ^ PredictFocus(System::Windows::Input::FocusNavigationDirection direction);
public override sealed System.Windows.DependencyObject PredictFocus (System.Windows.Input.FocusNavigationDirection direction);
override this.PredictFocus : System.Windows.Input.FocusNavigationDirection -> System.Windows.DependencyObject
Public Overrides NotOverridable Function PredictFocus (direction As FocusNavigationDirection) As DependencyObject

Paramètres

direction
FocusNavigationDirection

La direction pour laquelle une future modification de focus doit être déterminée.The direction for which a prospective focus change should be determined.

Retours

DependencyObject

L'élément suivant sur lequel se déplacerait le focus si le focus était parcouru réellement.The next element that focus would move to if focus were actually traversed. Peut retourner null si le focus ne peut pas être déplacé par rapport à cet élément pour la direction fournie.May return null if focus cannot be moved relative to this element for the provided direction.

Exceptions

Spécifié l'une des directions suivantes dans le TraversalRequest: Next, Previous, First, Last.Specified one of the following directions in the TraversalRequest: Next, Previous, First, Last. Ces sens ne sont pas légaux pour PredictFocus(FocusNavigationDirection) (mais le sont pour MoveFocus(TraversalRequest)).These directions are not legal for PredictFocus(FocusNavigationDirection) (but they are legal for MoveFocus(TraversalRequest)).

Exemples

L’exemple suivant implémente un gestionnaire qui gère plusieurs entrées de bouton possibles, chaque bouton représentant un possible FocusNavigationDirection .The following example implements a handler that handles several possible button inputs, each button representing a possible FocusNavigationDirection. Le gestionnaire effectue le suivi de l’élément avec le focus clavier actuel et appelle PredictFocus sur cet élément, et spécifie l' FocusNavigationDirection initialisation appropriée pour le TraversalRequest paramètre de type fourni.The handler tracks the element with current keyboard focus, and calls PredictFocus on that element, and specifies the appropriate FocusNavigationDirection as initialization for the TraversalRequest type parameter provided. Au lieu de passer à cet élément MoveFocus , le gestionnaire modifie les dimensions physiques de la destination de focus prédite à des fins de visualisation.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 void OnPredictFocus(object sender, RoutedEventArgs e)
    {
        DependencyObject predictionElement = null;

        UIElement elementWithFocus = Keyboard.FocusedElement as UIElement;

        if (elementWithFocus != null)
        {
            // Only these four directions are currently supported
            // by PredictFocus, so we need to filter on these only.
            if ((_focusMoveValue == FocusNavigationDirection.Up) ||
                (_focusMoveValue == FocusNavigationDirection.Down) ||
                (_focusMoveValue == FocusNavigationDirection.Left) ||
                (_focusMoveValue == FocusNavigationDirection.Right))
            {

                // Get the element which would receive focus if focus were changed.
                predictionElement = elementWithFocus.PredictFocus(_focusMoveValue);
               
                Control controlElement = predictionElement as Control;

                // If a ContentElement.
                if (controlElement != null)
                {
                    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;
                }
            }
        }
    }
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

Remarques

MoveFocus est la méthode associée qui déplace en fait le focus.MoveFocus is the related method that actually does move focus.

S’applique à

Voir aussi