FocusManager.TryFocusAsync(DependencyObject, FocusState) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Asynchronously attempts to set focus on an element when the application is initialized.
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)
Parameters
- element
- DependencyObject
The object on which to set focus.
- value
- FocusState
One of the values from the FocusState enumeration that specify how an element can obtain focus.
Returns
The FocusMovementResult that indicates whether focus was successfully set.
- Attributes
Windows requirements
Device family |
Windows 10, version 1803 (introduced in 10.0.17134.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduced in v6.0)
|
Examples
Here, we show how to set focus on a WebView object, and, if that fails, restore focus to the original element.
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);
}
}
Remarks
Some objects, such as a WebView, can run in either the app process or in a separate process (see WebViewExecutionMode.SeparateProcess).
When an object runs in the app process, the following focus events occur as expected for both the previously focused object and the newly focused object:
However, if the newly focused object is running in a separate process some of these event behaviors can differ.
- GetFocusedElement does not return the newly focused object until the TryFocusAsync operation completes.
- The control losing focus receives its LosingFocus event synchronously, but does not receive LostFocus until the asynchronous operation completes.
- The control getting focus receieves its GettingFocus event synchronously, but does not receive GotFocus until the asynchronous operation completes.
TryFocusAsync completes synchronously when called on an element running in the app process.