Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método FrameworkElement.PredictFocus (FocusNavigationDirection)

 

Publicado: octubre de 2016

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.

Espacio de nombres:   System.Windows
Ensamblado:  PresentationFramework (en PresentationFramework.dll)

public override sealed DependencyObject PredictFocus(
	FocusNavigationDirection direction
)

Parámetros

direction
Type: System.Windows.Input.FocusNavigationDirection

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

Valor devuelto

Type: System.Windows.DependencyObject

El siguiente elemento que se centran se movería si realmente se recorrieron foco. Puede devolver null Si no se puede mover el foco relativo a este elemento para la dirección proporcionada.

Exception Condition
InvalidEnumArgumentException

Especificar una de las siguientes instrucciones en el TraversalRequest: Next, Previous, First, Last. Estas instrucciones no son válidas para PredictFocus (pero son válidas para MoveFocus).

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

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

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

.NET Framework
Disponible desde 3.0
Volver al principio
Mostrar: