FrameworkElement.PredictFocus(FocusNavigationDirection) 方法

定義

決定下一個項目,該項目會針對所提供的焦點移動方向,接收相對於此項目的焦點,但是不會實際移動焦點。

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

參數

direction
FocusNavigationDirection

應用於決定預期焦點變更的方向。

傳回

如果焦點實際上有周遊時,焦點會移動到的下一個項目。 如果無法依所提供的方向相對於此項目移動焦點,則可能傳回 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, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

另請參閱