Ler em inglês

Compartilhar via


FrameworkElement.PredictFocus(FocusNavigationDirection) Método

Definição

Determina o próximo elemento que deve receber o foco em relação a esse elemento para uma direção de movimento do foco fornecido, mas não move o foco realmente.

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

Parâmetros

direction
FocusNavigationDirection

A direção para a qual uma alteração de foco potencial deve ser determinada.

Retornos

O próximo elemento para o qual o foco se moverá se o foco for realmente percorrido. Poderá retornar null se o foco não puder ser movido em relação a esse elemento para a direção fornecida.

Exceções

Especifica uma das seguintes instruções no TraversalRequest: Next, Previous, First ou Last. Essas instruções não são válidas para PredictFocus(FocusNavigationDirection) (mas são válidas para MoveFocus(TraversalRequest)).

Exemplos

O exemplo a seguir implementa um manipulador que manipula várias entradas de botão possíveis, cada botão que representa um possível FocusNavigationDirection. O manipulador rastreia o elemento com foco no teclado atual e chama PredictFocus esse elemento e especifica o apropriado FocusNavigationDirection como inicialização para o parâmetro de TraversalRequest tipo fornecido. Em vez de mover para esse elemento como MoveFocus faria, o manipulador altera as dimensões físicas do destino de foco previsto para fins de visualização.

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

Comentários

MoveFocus é o método relacionado que realmente move o foco.

Aplica-se a

Produto Versões
.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

Confira também