FrameworkElement.PredictFocus(FocusNavigationDirection) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Determina il successivo elemento che riceverà lo stato attivo in relazione a questo elemento per una direzione dello spostamento dello stato attivo specificata, ma non sposta effettivamente lo stato attivo.
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
Parametri
- direction
- FocusNavigationDirection
Direzione per la quale deve essere determinata una potenziale modifica dello stato attivo.
Restituisce
Elemento successivo su cui verrebbe spostato lo stato attivo in caso di effettivo attraversamento dello stato attivo. Potrebbe restituire null
se lo stato attivo non può essere spostato in relazione a questo elemento per la direzione specificata.
Eccezioni
Specificata per una delle seguenti direzioni in TraversalRequest: Next, Previous, First, Last. Queste direzioni non sono valide per PredictFocus(FocusNavigationDirection), ma lo sono per MoveFocus(TraversalRequest).
Esempio
Nell'esempio seguente viene implementato un gestore che gestisce diversi input di pulsante possibili, ognuno dei quali rappresenta un possibile FocusNavigationDirectionoggetto . Il gestore tiene traccia dell'elemento con lo stato attivo della tastiera corrente e chiama PredictFocus tale elemento e specifica l'elemento appropriato FocusNavigationDirection come inizializzazione per il TraversalRequest parametro di tipo fornito. Invece di passare a tale elemento come MoveFocus farebbe, il gestore modifica le dimensioni fisiche della destinazione prevista dello stato attivo a scopo di visualizzazione.
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
Commenti
MoveFocus è il metodo correlato che effettivamente sposta lo stato attivo.