FocusManager.TryFocusAsync(DependencyObject, FocusState) 메서드

정의

애플리케이션이 초기화될 때 요소에 포커스를 비동기적으로 설정하려고 시도합니다.

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 입니다.

특성

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); 
    } 
}

설명

WebView와 같은 일부 개체는 앱 프로세스 또는 별도의 프로세스에서 실행할 수 있습니다(WebViewExecutionMode.SeparateProcess 참조).

앱 프로세스에서 개체가 실행되면 이전에 포커스가 있는 개체와 새로 포커스가 있는 개체 모두에 대해 다음과 같은 포커스 이벤트가 예상대로 발생합니다.

그러나 새로 포커스가 있는 개체가 별도의 프로세스에서 실행되는 경우 이러한 이벤트 동작 중 일부는 다를 수 있습니다.

  • GetFocusedElement 는 TryFocusAsync 작업이 완료될 때까지 새로 포커스가 있는 개체를 반환하지 않습니다.
  • 포커스가 손실된 컨트롤은 LosingFocus 이벤트를 동기적으로 수신하지만 비동기 작업이 완료될 때까지 LostFocus 를 받지 않습니다.
  • 포커스를 가져오는 컨트롤은 GettingFocus 이벤트를 동기적으로 수신하지만 비동기 작업이 완료될 때까지 GotFocus 를 받지 않습니다.

TryFocusAsync는 앱 프로세스에서 실행되는 요소에서 호출되면 동기적으로 완료됩니다.

적용 대상

추가 정보