FocusManager.TryFocusAsync(DependencyObject, FocusState) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Intenta establecer el foco de forma asincrónica en un elemento cuando se inicializa la aplicación.
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)
Parámetros
- element
- DependencyObject
Objeto en el que se va a establecer el foco.
- value
- FocusState
Uno de los valores de la enumeración FocusState que especifica cómo un elemento puede obtener el foco.
Devoluciones
FocusMovementResult que indica si el foco se estableció correctamente.
- Atributos
Ejemplos
Aquí se muestra cómo establecer el foco en un objeto WebView y, si se produce un error, se restaura el foco en el 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);
}
}
Comentarios
Algunos objetos, como webView, se pueden ejecutar en el proceso de la aplicación o en un proceso independiente (consulte WebViewExecutionMode.SeparateProcess).
Cuando un objeto se ejecuta en el proceso de la aplicación, los siguientes eventos de foco se producen según lo esperado tanto para el objeto centrado anteriormente como para el objeto recién centrado:
Sin embargo, si el objeto recién centrado se ejecuta en un proceso independiente, algunos de estos comportamientos de eventos pueden diferir.
- GetFocusedElement no devuelve el objeto recién centrado hasta que se complete la operación TryFocusAsync.
- El control que pierde el foco recibe su evento LosingFocus de forma sincrónica, pero no recibe LostFocus hasta que se completa la operación asincrónica.
- El control que obtiene el foco recibe su evento GettingFocus de forma sincrónica, pero no recibe GotFocus hasta que se completa la operación asincrónica.
TryFocusAsync se completa de forma sincrónica cuando se llama a en un elemento que se ejecuta en el proceso de la aplicación.