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

Определение

Определяет следующий элемент, который получит фокус, относительно данного элемента для указанного направления движения фокуса, но реально фокус не перемещает.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

Параметры

direction
FocusNavigationDirection FocusNavigationDirection FocusNavigationDirection FocusNavigationDirection

Направление, в котором следует определить перспективное изменение фокуса.The direction for which a prospective focus change should be determined.

Возвраты

Следующий элемент, на который будет перемещен фокус в случае фактического обхода фокуса.The next element that focus would move to if focus were actually traversed. Может возвращать значение null, если фокус нельзя переместить относительно данного элемента в указанном направлении.May return null if focus cannot be moved relative to this element for the provided direction.

Исключения

Одно из следующих направлений, указанное в TraversalRequest: Next, Previous, First, Last.Specified one of the following directions in the TraversalRequest: Next, Previous, First, Last. Эти направления недопустимы для метода PredictFocus(FocusNavigationDirection) (однако допустимы для метода MoveFocus(TraversalRequest)).These directions are not legal for PredictFocus(FocusNavigationDirection) (but they are legal for MoveFocus(TraversalRequest)).

Примеры

В следующем примере реализуется обработчик, обрабатывающий несколько возможных входных значений кнопки, каждая из FocusNavigationDirectionкоторых представляет собой возможную кнопку.The following example implements a handler that handles several possible button inputs, each button representing a possible FocusNavigationDirection. Обработчик отслеживает элемент с текущим фокусом клавиатуры и вызывает PredictFocus для этого элемента и указывает соответствующую FocusNavigationDirection инициализацию для TraversalRequest предоставленного параметра типа.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. Вместо того чтобы перемещаться к этому MoveFocus элементу, как это делается, обработчик изменяет физические размеры целевого назначения прогнозируемого фокуса для целей визуализации.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

Комментарии

MoveFocus— Это связанный метод, который фактически перемещает фокус.MoveFocus is the related method that actually does move focus.

Применяется к

Дополнительно