FrameworkElement.PredictFocus(FocusNavigationDirection) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje další prvek, který by získal fokus vzhledem k tomuto prvku pro zadaný směr pohybu fokusu, ale ve skutečnosti fokus nepřesouvat.
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, pokud fokus null
nelze přesunout vzhledem k tomuto prvku pro zadaný směr.
Výjimky
Byl zadán jeden z následujících směrů v : TraversalRequestNext, , PreviousFirst, Last. Tyto pokyny nejsou pro ( PredictFocus(FocusNavigationDirection) ale jsou právní 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, přičemž každé tlačítko představuje možné FocusNavigationDirection. Obslužná rutina sleduje prvek s aktuálním fokusem klávesnice a volá PredictFocus tento prvek a určuje odpovídající FocusNavigationDirection inicializaci pro TraversalRequest zadaný parametr typu. Místo přechodu na tento prvek tak, jak MoveFocus by to bylo, obslužná rutina změní fyzické rozměry predikované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á skutečně přesouvá fokus.