次の方法で共有


FrameworkElement.PredictFocus(FocusNavigationDirection) メソッド

定義

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

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

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

戻り値

DependencyObject

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

例外

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

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

    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 は、実際にフォーカスを移動する関連メソッドです。

適用対象

こちらもご覧ください