FrameworkElement.PredictFocus(FocusNavigationDirection) FrameworkElement.PredictFocus(FocusNavigationDirection) FrameworkElement.PredictFocus(FocusNavigationDirection) FrameworkElement.PredictFocus(FocusNavigationDirection) Method

Definition

Bestimmt das nächste Element, das relativ zu diesem Element den Fokus in einer angegebenen Fokusverschiebungsrichtung erhalten würde, verschiebt den Fokus jedoch nicht.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

Parameter

direction
FocusNavigationDirection FocusNavigationDirection FocusNavigationDirection FocusNavigationDirection

Die Richtung, für die eine mögliche Fokusänderung bestimmt werden soll.The direction for which a prospective focus change should be determined.

Gibt zurück

Das nächste Element, auf das der Fokus verschoben würde, wenn der Fokus tatsächlich durchlaufen würde.The next element that focus would move to if focus were actually traversed. Kann null zurückgeben, wenn der Fokus für die bereitgestellte Richtung nicht relativ zu diesem Element verschoben werden kann.May return null if focus cannot be moved relative to this element for the provided direction.

Ausnahmen

Gibt eine der folgenden Richtungen im TraversalRequest an: Next, Previous, First, Last.Specified one of the following directions in the TraversalRequest: Next, Previous, First, Last. Diese Richtungen sind für PredictFocus(FocusNavigationDirection) unzulässig (aber für MoveFocus(TraversalRequest) zulässig).These directions are not legal for PredictFocus(FocusNavigationDirection) (but they are legal for MoveFocus(TraversalRequest)).

Beispiele

Das folgende Beispiel implementiert einen Handler, der mehrere mögliche Schaltflächeneingaben, jede Schaltfläche, die eine mögliche darstellt behandelt FocusNavigationDirection.The following example implements a handler that handles several possible button inputs, each button representing a possible FocusNavigationDirection. Der Handler verfolgt das Element mit dem aktuellen Tastaturfokus und ruft PredictFocus auf diesem Element und gibt die entsprechende FocusNavigationDirection als Initialisierung für die TraversalRequest Typparameter angegeben.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. Anstatt auf das betreffende Element als MoveFocus dazu, der Handler ändert sich die physischen Abmessungen des Ziels vorhergesagten Fokus für Zwecke der Visualisierung.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

Hinweise

MoveFocus ist die entsprechende Methode, die tatsächlich den Fokus verschiebt.MoveFocus is the related method that actually does move focus.

Gilt für:

Siehe auch