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.

C#
public override sealed System.Windows.DependencyObject PredictFocus(System.Windows.Input.FocusNavigationDirection direction);

Parámetros

direction
FocusNavigationDirection

Dirección para la que se debe determinar un cambio de foco probable.

Devoluciones

Elemento siguiente al que el foco se movería si se atravesara el foco realmente. Puede devolver null si el foco no se puede mover en relación con este elemento para la dirección proporcionada.

Excepciones

Especificó una de las direcciones siguientes en TraversalRequest: Next, Previous, First, Last. Estas direcciones no son válidas para PredictFocus(FocusNavigationDirection) (pero son válidas para MoveFocus(TraversalRequest)).

Ejemplos

En el ejemplo siguiente se implementa un controlador que controla varias entradas de botón posibles, cada botón que representa un posible FocusNavigationDirection. El controlador realiza un seguimiento del elemento con el foco de teclado actual y llama PredictFocus a ese elemento y especifica el adecuado FocusNavigationDirection como inicialización para el TraversalRequest parámetro de tipo proporcionado. En lugar de pasar a ese elemento como MoveFocus lo haría, el controlador cambia las dimensiones físicas del destino de foco previsto con fines de visualización.

C#
    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;
                }
            }
        }
    }

Comentarios

MoveFocus es el método relacionado que realmente mueve el foco.

Se aplica a

Producto Versiones
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Consulte también