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 に、NextPreviousFirstLast のいずれかの方向が指定されました。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.

適用対象

こちらもご覧ください