FrameworkElement.PredictFocus(FocusNavigationDirection) Método

Definición

Determina el elemento siguiente que recibiría el foco relativo a este elemento para una dirección de movimiento de foco proporcionada, pero realmente no mueve el foco.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

Parámetros

direction
FocusNavigationDirection

Dirección para la que se debe determinar un cambio de foco probable.The direction for which a prospective focus change should be determined.

Devoluciones

Elemento siguiente al que el foco se movería si se atravesara el foco realmente.The next element that focus would move to if focus were actually traversed. Puede devolver null si el foco no se puede mover en relación con este elemento para la dirección proporcionada.May return null if focus cannot be moved relative to this element for the provided direction.

Excepciones

Especificó una de las direcciones siguientes en TraversalRequest: Next, Previous, First, Last.Specified one of the following directions in the TraversalRequest: Next, Previous, First, Last. Estas direcciones no son válidas para PredictFocus(FocusNavigationDirection) (pero son válidas para MoveFocus(TraversalRequest)).These directions are not legal for PredictFocus(FocusNavigationDirection) (but they are legal for MoveFocus(TraversalRequest)).

Ejemplos

En el ejemplo siguiente se implementa un controlador que controla varias entradas de botón posibles, cada uno de los cuales representa un posible FocusNavigationDirection.The following example implements a handler that handles several possible button inputs, each button representing a possible FocusNavigationDirection. El controlador realiza un seguimiento del elemento con el foco de teclado actual y llama a PredictFocus en ese elemento y especifica el FocusNavigationDirection adecuado como inicialización para el parámetro de tipo TraversalRequest proporcionado.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. En lugar de pasar a ese elemento como lo haría MoveFocus, el controlador cambia las dimensiones físicas del destino de foco de predicción para fines de visualización.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

Comentarios

MoveFocus es el método relacionado que realmente mueve el foco.MoveFocus is the related method that actually does move focus.

Se aplica a

Consulte también: