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.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

A direção para a qual uma alteração de foco potencial deve ser determinada.The direction for which a prospective focus change should be determined.

Retornos

O próximo elemento para o qual o foco se moverá se o foco for realmente percorrido.The next element that focus would move to if focus were actually traversed. Poderá retornar null se o foco não puder ser movido em relação a esse elemento para a direção fornecida.May return null if focus cannot be moved relative to this element for the provided direction.

Exceções

Especifica uma das seguintes instruções no TraversalRequest: Next, Previous, First ou Last.Specified one of the following directions in the TraversalRequest: Next, Previous, First, Last. Essas instruções não são válidas para PredictFocus(FocusNavigationDirection) (mas são válidas para MoveFocus(TraversalRequest)).These directions are not legal for PredictFocus(FocusNavigationDirection) (but they are legal for 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 uma possível FocusNavigationDirection.The following example implements a handler that handles several possible button inputs, each button representing a possible FocusNavigationDirection. O manipulador rastreia o elemento com o foco atual do teclado e chama PredictFocus nesse elemento e especifica o FocusNavigationDirection apropriado como inicialização para o parâmetro de tipo TraversalRequest fornecido.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. 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.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

Comentários

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

Aplica-se a

Veja também