FrameworkElement.PredictFocus(FocusNavigationDirection) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет следующий элемент, который будет получать фокус относительно этого элемента для заданного направления перемещения фокуса, но на самом деле не перемещает фокус.
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
Направление, для которого следует определить потенциальное изменение фокуса.
Возвращаемое значение
Следующий элемент, на который фокус переместится, если фокус был на самом деле пройден. Может возвращать, null если фокус не может быть перемещен относительно этого элемента для указанного направления.
Исключения
Указан один из следующих направлений TraversalRequestв : Next, Previous, FirstLast. Эти направления не являются законными PredictFocus(FocusNavigationDirection) для (но они являются законными для MoveFocus(TraversalRequest)).
Примеры
В следующем примере реализуется обработчик, который обрабатывает несколько возможных входных данных кнопки, каждая кнопка представляет возможную FocusNavigationDirection. Обработчик отслеживает элемент с текущим фокусом клавиатуры и вызывает PredictFocus этот элемент и задает соответствующее FocusNavigationDirection значение в качестве инициализации для предоставленного TraversalRequest параметра типа. Вместо перехода к данному элементу MoveFocus обработчик изменяет физические измерения прогнозируемого назначения фокуса для целей визуализации.
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 — связанный метод, который фактически перемещает фокус.