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) 傳回 true (成功) ,然後焦點變更完成之前。
- 在非同步作業完成之前,GetFocusedElement不會傳回新焦點的物件。
- 控制項遺失焦點會同步接收其 LosingFocus 事件,但在非同步作業完成之前不會收到 LostFocus 。
- 控制項會同步擷取其 GettingFocus 事件,但在非同步作業完成之前不會收到 GotFocus 。
在應用程式進程中執行的專案上呼叫時,TryFocusAsync會以同步方式完成。
您也可以使用 FindNextElement (FocusNavigationDirection、FindNextElementOptions) 方法或 FindNextElement (FocusNavigationDirection) 方法來以程式設計方式移動焦點。 這些方法會擷取元素 (為 DependencyObject) ,該元素只會根據指定的導覽方向 (方向流覽接收焦點,無法用來模擬索引標籤導覽) 。
注意
我們建議使用 FindNextElement 方法,而不是 FindNextFocusableElement,因為 FindNextFocusableElement 會擷取 UIElement,如果下一個可設定焦點的專案不是 UIElement (,則會傳回 null,例如 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
焦點從元素移至應用程式 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) 傳回 true (成功) ,然後焦點變更完成之前。
- 在非同步作業完成之前,GetFocusedElement不會傳回新焦點的物件。
- 控制項遺失焦點會同步接收其 LosingFocus 事件,但在非同步作業完成之前不會收到 LostFocus 。
- 控制項會同步擷取其 GettingFocus 事件,但在非同步作業完成之前不會收到 GotFocus 。
在應用程式進程中執行的專案上呼叫時,TryFocusAsync會以同步方式完成。
您也可以使用 FindNextElement (FocusNavigationDirection、FindNextElementOptions) 方法或 FindNextElement (FocusNavigationDirection) 方法來以程式設計方式移動焦點。 這些方法會擷取元素 (為 DependencyObject) ,該元素只會根據指定的導覽方向 (方向流覽接收焦點,無法用來模擬索引標籤導覽) 。
注意
我們建議使用 FindNextElement 方法,而不是 FindNextFocusableElement,因為 FindNextFocusableElement 會擷取 UIElement,如果下一個可設定焦點的專案不是 UIElement (,則會傳回 null,例如 Hyperlink 物件) 。