FrameworkElement.PredictFocus(FocusNavigationDirection) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Determina el siguiente elemento que recibiría el foco en relación con este elemento para una dirección de movimiento de foco proporcionada, pero no mueve realmente el foco.
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
Parámetros
- direction
- FocusNavigationDirection
Dirección para la que se debe determinar un posible cambio de enfoque.
Devoluciones
El siguiente elemento al que el foco se movería si realmente se atravesara el foco. Puede devolver null si el foco no se puede mover con respecto a este elemento para la dirección proporcionada.
Excepciones
Se especificó una de las instrucciones siguientes en TraversalRequest: Next, Previous, First, Last. Estas instrucciones no son legales para PredictFocus(FocusNavigationDirection) (pero son legales para MoveFocus(TraversalRequest)).
Ejemplos
En el ejemplo siguiente se implementa un controlador que controla varias entradas de botón posibles, cada botón que representa un posible FocusNavigationDirection. El controlador realiza un seguimiento del elemento con el foco de teclado actual y llama PredictFocus a ese elemento y especifica el adecuado FocusNavigationDirection como inicialización para el parámetro de TraversalRequest tipo proporcionado. En lugar de pasar a ese elemento como MoveFocus lo haría, el controlador cambia las dimensiones físicas del destino de foco previsto para fines de visualización.
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
Comentarios
MoveFocus es el método relacionado que realmente mueve el foco.