FocusManager.TryFocusAsync(DependencyObject, FocusState) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
初始化应用程序时,异步尝试在元素上设置焦点。
public:
static IAsyncOperation<FocusMovementResult ^> ^ TryFocusAsync(DependencyObject ^ element, FocusState value);
/// [Windows.Foundation.Metadata.RemoteAsync]
static IAsyncOperation<FocusMovementResult> TryFocusAsync(DependencyObject const& element, FocusState const& value);
[Windows.Foundation.Metadata.RemoteAsync]
public static IAsyncOperation<FocusMovementResult> TryFocusAsync(DependencyObject element, FocusState value);
function tryFocusAsync(element, value)
Public Shared Function TryFocusAsync (element As DependencyObject, value As FocusState) As IAsyncOperation(Of FocusMovementResult)
参数
- element
- DependencyObject
要对其设置焦点的 对象。
- value
- FocusState
FocusState 枚举中的值之一,该值指定元素如何获取焦点。
返回
指示是否已成功设置焦点的 FocusMovementResult 。
- 属性
示例
此处,我们演示如何在 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);
}
}
注解
某些对象(如 WebView)可以在应用进程或单独的进程中运行, (请参阅 WebViewExecutionMode.SeparateProcess) 。
当对象在应用进程中运行时,以前聚焦的对象和新焦点对象都按预期发生以下焦点事件:
但是,如果新聚焦的对象在单独的进程中运行,则其中一些事件行为可能会有所不同。
- 在 TryFocusAsync 操作完成之前,GetFocusedElement 不会返回新聚焦的对象。
- 失去焦点的控件会同步接收其 LosingFocus 事件,但在异步操作完成之前不会接收 LostFocus 。
- 获取焦点的控件会同步接收其 GettingFocus 事件,但在异步操作完成之前不会接收 GotFocus 。
在应用进程中运行的元素上调用时,TryFocusAsync 会同步完成。