FocusManager.TryMoveFocusAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
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
焦点在应用 UI 中从元素移动到元素的方向。
返回
指示是否已成功设置焦点的 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 focusNavigationOptions) 在焦点更改完成之前返回 true (成功) 。
- 在异步操作完成之前,GetFocusedElement 不会返回新聚焦的对象。
- 失去焦点的控件会同步接收其 LosingFocus 事件,但在异步操作完成之前不会接收 LostFocus 。
- 获取焦点的控件会同步接收其 GettingFocus 事件,但在异步操作完成之前不会接收 GotFocus 。
在应用进程中运行的元素上调用时,TryFocusAsync 会同步完成。
还可以使用 FindNextElement (FocusNavigationDirection、FindNextElementOptions) 方法或 FindNextElement (FocusNavigationDirection) 方法以编程方式移动焦点。 这些方法检索元素 (为 DependencyObject) ,该元素将仅根据指定导航方向接收焦点 (方向,不能用于模拟选项卡导航) 。
注意
建议使用 FindNextElement 方法而不是 FindNextFocusableElement 方法,因为 FindNextFocusableElement 会检索 UIElement,如果下一个可聚焦元素不是 UIElement ((如 Hyperlink 对象) ),则返回 null。
另请参阅
- 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
焦点在应用 UI 中从元素移动到元素的方向。
- 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 focusNavigationOptions) 在焦点更改完成之前返回 true (成功) 。
- 在异步操作完成之前,GetFocusedElement 不会返回新聚焦的对象。
- 失去焦点的控件会同步接收其 LosingFocus 事件,但在异步操作完成之前不会接收 LostFocus 。
- 获取焦点的控件会同步接收其 GettingFocus 事件,但在异步操作完成之前不会接收 GotFocus 。
在应用进程中运行的元素上调用时,TryFocusAsync 会同步完成。
还可以使用 FindNextElement (FocusNavigationDirection、FindNextElementOptions) 方法或 FindNextElement (FocusNavigationDirection) 方法以编程方式移动焦点。 这些方法检索元素 (为 DependencyObject) ,该元素将仅根据指定导航方向接收焦点 (方向,不能用于模拟选项卡导航) 。
注意
建议使用 FindNextElement 方法而不是 FindNextFocusableElement 方法,因为 FindNextFocusableElement 会检索 UIElement,如果下一个可聚焦元素不是 UIElement ((如 Hyperlink 对象) ),则返回 null。