FocusManager.TryMoveFocusAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
TryMoveFocusAsync(FocusNavigationDirection) |
Асинхронно пытается изменить фокус с текущего элемента с фокусом на следующий фокусируемый элемент в указанном направлении. |
TryMoveFocusAsync(FocusNavigationDirection, FindNextElementOptions) |
Асинхронно пытается изменить фокус с текущего элемента с фокусом на следующий фокусируемый элемент в указанном направлении и подчиняется заданным параметрам навигации. |
TryMoveFocusAsync(FocusNavigationDirection)
Асинхронно пытается изменить фокус с текущего элемента с фокусом на следующий фокусируемый элемент в указанном направлении.
public:
static IAsyncOperation<FocusMovementResult ^> ^ TryMoveFocusAsync(FocusNavigationDirection focusNavigationDirection);
/// [Windows.Foundation.Metadata.Overload("TryMoveFocusAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
static IAsyncOperation<FocusMovementResult> TryMoveFocusAsync(FocusNavigationDirection const& focusNavigationDirection);
[Windows.Foundation.Metadata.Overload("TryMoveFocusAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public static IAsyncOperation<FocusMovementResult> TryMoveFocusAsync(FocusNavigationDirection focusNavigationDirection);
function tryMoveFocusAsync(focusNavigationDirection)
Public Shared Function TryMoveFocusAsync (focusNavigationDirection As FocusNavigationDirection) As IAsyncOperation(Of FocusMovementResult)
Параметры
- focusNavigationDirection
- FocusNavigationDirection
Направление перемещения фокуса от элемента к элементу в пользовательском интерфейсе приложения.
Возвращаемое значение
FocusMovementResult, указывающий, успешно ли установлен фокус.
- Атрибуты
Требования к Windows
Семейство устройств |
Windows 10, version 1803 (появилось в 10.0.17134.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v6.0)
|
Примеры
Здесь мы покажем, как установить фокус на объекте WebView и, если это не удается, восстановить фокус на исходном элементе.
async void MoveFocus(WebView webView))
{
FocusMovementResult result;
result = await FocusManager.TryFocusAsync(webView, FocusState.Programmatic);
if (!result.Succeeded)
{
// Restore focus to original element.
this.Focus(FocusState.Programmatic);
}
}
Комментарии
- TryMoveFocus(Windows.UI.Xaml.Input.FocusNavigationDirection focusNavigationDirection) и FocusManager.TryMoveFocus(FocusNavigationDirection focusNavigationDirection, FindNextElementOptions focusNavigationOptions) возвращают true (успешно) до завершения изменения фокуса.
- GetFocusedElement не возвращает новый объект , пока не завершится асинхронная операция.
- Элемент управления, теряющий фокус, получает событие LostFocus синхронно, но не получает LostFocus до завершения асинхронной операции.
- Элемент управления, получая фокус, получает событие GettingFocus синхронно, но не получает GotFocus до завершения асинхронной операции.
TryFocusAsync выполняется синхронно при вызове элемента, выполняющегося в процессе приложения.
Для программного перемещения фокуса можно также использовать метод FindNextElement(FocusNavigationDirection, FindNextElementOptions) или метод FindNextElement(FocusNavigationDirection). Эти методы извлекают элемент (как DependencyObject), который будет получать фокус на основе указанного направления навигации (только направленная навигация, не может использоваться для эмуляции навигации по вкладкам).
Примечание
Мы рекомендуем использовать метод FindNextElement вместо FindNextFocusableElement, так как FindNextFocusableElement извлекает UIElement, который возвращает значение NULL, если следующий фокусируемый элемент не является UIElement (например, объект Hyperlink ).
См. также раздел
- TryMoveFocusAsync(FocusNavigationDirection, FindNextElementOptions)
- Взаимодействие с помощью клавиатуры
- Перемещение фокуса с помощью клавиатуры, геймпада, пульта дистанционного управления и средств специальных возможностей
- Программное перемещение фокуса
Применяется к
TryMoveFocusAsync(FocusNavigationDirection, FindNextElementOptions)
Асинхронно пытается изменить фокус с текущего элемента с фокусом на следующий фокусируемый элемент в указанном направлении и подчиняется заданным параметрам навигации.
public:
static IAsyncOperation<FocusMovementResult ^> ^ TryMoveFocusAsync(FocusNavigationDirection focusNavigationDirection, FindNextElementOptions ^ focusNavigationOptions);
/// [Windows.Foundation.Metadata.Overload("TryMoveFocusWithOptionsAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
static IAsyncOperation<FocusMovementResult> TryMoveFocusAsync(FocusNavigationDirection const& focusNavigationDirection, FindNextElementOptions const& focusNavigationOptions);
[Windows.Foundation.Metadata.Overload("TryMoveFocusWithOptionsAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public static IAsyncOperation<FocusMovementResult> TryMoveFocusAsync(FocusNavigationDirection focusNavigationDirection, FindNextElementOptions focusNavigationOptions);
function tryMoveFocusAsync(focusNavigationDirection, focusNavigationOptions)
Public Shared Function TryMoveFocusAsync (focusNavigationDirection As FocusNavigationDirection, focusNavigationOptions As FindNextElementOptions) As IAsyncOperation(Of FocusMovementResult)
Параметры
- focusNavigationDirection
- FocusNavigationDirection
Направление перемещения фокуса от элемента к элементу в пользовательском интерфейсе приложения.
- focusNavigationOptions
- FindNextElementOptions
Параметры навигации, используемые для идентификации кандидата фокуса.
Возвращаемое значение
FocusMovementResult, указывающий, успешно ли установлен фокус.
- Атрибуты
Требования к Windows
Семейство устройств |
Windows 10, version 1803 (появилось в 10.0.17134.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v6.0)
|
Примеры
Здесь мы покажем, как установить фокус на объекте WebView и, если это не удается, восстановить фокус на исходном элементе.
async void MoveFocus(WebView webView))
{
FocusMovementResult result;
result = await FocusManager.TryFocusAsync(webView, FocusState.Programmatic);
if (!result.Succeeded)
{
// Restore focus to original element.
this.Focus(FocusState.Programmatic);
}
}
Комментарии
- TryMoveFocus(Windows.UI.Xaml.Input.FocusNavigationDirection focusNavigationDirection) и FocusManager.TryMoveFocus(FocusNavigationDirection focusNavigationDirection, FindNextElementOptions focusNavigationOptions) возвращают true (успешно) до завершения изменения фокуса.
- GetFocusedElement не возвращает новый объект , пока не завершится асинхронная операция.
- Элемент управления, теряющий фокус, получает событие LostFocus синхронно, но не получает LostFocus до завершения асинхронной операции.
- Элемент управления, получая фокус, получает событие GettingFocus синхронно, но не получает GotFocus до завершения асинхронной операции.
TryFocusAsync выполняется синхронно при вызове элемента, выполняющегося в процессе приложения.
Для программного перемещения фокуса можно также использовать метод FindNextElement(FocusNavigationDirection, FindNextElementOptions) или метод FindNextElement(FocusNavigationDirection). Эти методы извлекают элемент (как DependencyObject), который будет получать фокус на основе указанного направления навигации (только направленная навигация, не может использоваться для эмуляции навигации по вкладкам).
Примечание
Мы рекомендуем использовать метод FindNextElement вместо FindNextFocusableElement, так как FindNextFocusableElement извлекает UIElement, который возвращает значение NULL, если следующий фокусируемый элемент не является UIElement (например, объект Hyperlink ).
См. также раздел
- TryMoveFocusAsync(FocusNavigationDirection)
- Взаимодействие с помощью клавиатуры
- Перемещение фокуса с помощью клавиатуры, геймпада, пульта дистанционного управления и средств специальных возможностей
- Программное перемещение фокуса