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. 如果無法依所提供的方向相對於此項目移動焦點,則可能傳回 nullMay return null if focus cannot be moved relative to this element for the provided direction.

例外狀況

TraversalRequest 中指定下列其中一個方向:NextPreviousFirstLastSpecified 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)).

範例

下列範例會實作處理數種可能的按鈕輸入,表示可能發生的每個按鈕處理常式FocusNavigationDirectionThe 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.

適用於

另請參閱