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, First, Last. Эти направления недопустимы для метода 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 — это связанный метод, который фактически перемещает фокус.