FrameworkElement.PredictFocus(FocusNavigationDirection) Metodo

Definizione

Determina il successivo elemento che riceverà lo stato attivo in relazione a questo elemento per una direzione dello spostamento dello stato attivo specificata, ma non sposta effettivamente lo stato attivo.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

Parametri

direction
FocusNavigationDirection

Direzione per la quale deve essere determinata una potenziale modifica dello stato attivo.The direction for which a prospective focus change should be determined.

Restituisce

Elemento successivo su cui verrebbe spostato lo stato attivo in caso di effettivo attraversamento dello stato attivo.The next element that focus would move to if focus were actually traversed. Potrebbe restituire null se lo stato attivo non può essere spostato in relazione a questo elemento per la direzione specificata.May return null if focus cannot be moved relative to this element for the provided direction.

Eccezioni

Specificata per una delle seguenti direzioni in TraversalRequest: Next, Previous, First, Last.Specified one of the following directions in the TraversalRequest: Next, Previous, First, Last. Queste direzioni non sono valide per PredictFocus(FocusNavigationDirection), ma lo sono per MoveFocus(TraversalRequest).These directions are not legal for PredictFocus(FocusNavigationDirection) (but they are legal for MoveFocus(TraversalRequest)).

Esempi

Nell'esempio seguente viene implementato un gestore che gestisce diversi input pulsante possibili, ciascuno dei quali rappresenta un possibile FocusNavigationDirection.The following example implements a handler that handles several possible button inputs, each button representing a possible FocusNavigationDirection. Il gestore tiene traccia dell'elemento con lo stato attivo della tastiera corrente e chiama PredictFocus sull'elemento e specifica il FocusNavigationDirection appropriato come inizializzazione per il parametro di tipo TraversalRequest fornito.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. Anziché spostare l'elemento come MoveFocus, il gestore modifica le dimensioni fisiche della destinazione dello stato attivo stimato a scopo di visualizzazione.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

Commenti

MoveFocus è il metodo correlato che effettivamente sposta lo stato attivo.MoveFocus is the related method that actually does move focus.

Si applica a

Vedi anche