FrameworkElement.PredictFocus(FocusNavigationDirection) メソッド

定義

この要素を基準に、指定したフォーカスの移動方向で次にフォーカスを受け取る要素を特定します。ただし、実際のフォーカスの移動は行われません。

C#
public override sealed System.Windows.DependencyObject PredictFocus (System.Windows.Input.FocusNavigationDirection direction);

パラメーター

direction
FocusNavigationDirection

予想されるフォーカスの変更を決定する方向。

戻り値

DependencyObject

フォーカスが実際にスキャンされた場合にフォーカスの移動先となる、次の要素。 この要素を基準に、指定した方向へフォーカスを移動できない場合は、null が返されます。

例外

TraversalRequest に、NextPreviousFirstLast のいずれかの方向が指定されました。 これらの方向は、PredictFocus(FocusNavigationDirection) に対しては有効ではありません (MoveFocus(TraversalRequest) に対しては有効です)。

次の例では、使用可能な複数のボタン入力を処理するハンドラーを実装します。各ボタンは可能 FocusNavigationDirectionであることを表します。 ハンドラーは、現在のキーボード フォーカスを持つ要素を追跡し、その要素を呼び出 PredictFocus し、指定された型パラメーターの適切な FocusNavigationDirection 初期化を TraversalRequest 指定します。 ハンドラーは、その要素 MoveFocus に移動する代わりに、視覚化の目的で、予測されたフォーカス先の物理的なディメンションを変更します。

C#
    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;
                }
            }
        }
    }

注釈

MoveFocus は、実際にフォーカスを移動する関連メソッドです。

適用対象

製品 バージョン
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
Windows Desktop 3.0, 3.1, 5, 6, 7

こちらもご覧ください