FocusManager.TryFocusAsync(DependencyObject, FocusState) Método
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Tenta de forma assíncrona definir o foco em um elemento quando o aplicativo é inicializado.
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
O objeto no qual definir o foco.
- value
- FocusState
Um dos valores da enumeração FocusState que especificam como um elemento pode obter o foco.
O FocusMovementResult que indica se o foco foi definido com êxito.
- Atributos
Família de dispositivos |
Windows 10, version 1803 (introduzida na 10.0.17134.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v6.0)
|
Aqui, mostramos como definir o foco em um objeto WebView e, se isso falhar, restaurar o foco para o elemento original.
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);
}
}
Alguns objetos, como um WebView, podem ser executados no processo do aplicativo ou em um processo separado (consulte WebViewExecutionMode.SeparateProcess).
Quando um objeto é executado no processo do aplicativo, os seguintes eventos de foco ocorrem conforme o esperado para o objeto focado anteriormente e o objeto recém-focado:
No entanto, se o objeto recém-focado estiver em execução em um processo separado, alguns desses comportamentos de evento poderão ser diferentes.
- GetFocusedElement não retorna o objeto recém-focado até que a operação TryFocusAsync seja concluída.
- O controle que perde o foco recebe seu evento LosingFocus de forma síncrona, mas não recebe LostFocus até que a operação assíncrona seja concluída.
- O controle que recebe o foco recebe o evento GettingFocus de forma síncrona, mas não recebe GotFocus até que a operação assíncrona seja concluída.
TryFocusAsync é concluído de forma síncrona quando chamado em um elemento em execução no processo do aplicativo.