Partager via


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.

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.

Retours

L'élément suivant sur lequel se déplacerait le focus si le focus était parcouru réellement. Peut retourner null si le focus ne peut pas être déplacé par rapport à cet élément pour la direction fournie.

Exceptions

Spécifié l'une des directions suivantes dans le TraversalRequest: Next, Previous, First, Last. Ces sens ne sont pas légaux pour PredictFocus(FocusNavigationDirection) (mais le sont pour 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. Le gestionnaire suit l’élément avec le focus clavier actuel et appelle PredictFocus cet élément, puis spécifie le approprié FocusNavigationDirection comme initialisation pour le TraversalRequest paramètre de type fourni. Au lieu de passer à cet élément comme MoveFocus il le ferait, le gestionnaire modifie les dimensions physiques de la destination de focus prédite à des fins de visualisation.

    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 réellement le focus.

S’applique à

Voir aussi