FrameworkElement.PredictFocus(FocusNavigationDirection) Metoda

Definice

Určuje další prvek, který by získal fokus vzhledem k tomuto prvku pro zadaný směr pohybu fokusu, ale ve skutečnosti nepřesune fokus.

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

Parametry

direction
FocusNavigationDirection

Směr, pro který by se měla určit budoucí změna zaměření.

Návraty

Další prvek, na který se fokus přesune, pokud by byl fokus skutečně procházený. Může se vrátit null , pokud fokus nelze přesunout vzhledem k tomuto prvku pro zadaný směr.

Výjimky

Zadán jeden z následujících směrů v TraversalRequest: Next, Previous, First, Last. Tyto pokyny nejsou legální pro PredictFocus(FocusNavigationDirection) (ale jsou legální pro MoveFocus(TraversalRequest)).

Příklady

Následující příklad implementuje obslužnou rutinu, která zpracovává několik možných vstupů tlačítek, každý tlačítko představující možné FocusNavigationDirection. Obslužná rutina sleduje prvek s aktuálním fokusem klávesnice a volá PredictFocus na tento prvek a určuje odpovídající FocusNavigationDirection inicializaci pro TraversalRequest zadaný parametr typu. Místo přesunu na tento prvek tak, jak MoveFocus by tomu bylo, obslužná rutina změní fyzické dimenze předpovězeného cíle fokusu pro účely vizualizace.

    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

Poznámky

MoveFocus je související metoda, která ve skutečnosti přesouvá fokus.

Platí pro

Viz také