응용 프로그램 시작에 요소를 집중하지 않는 방법은 무엇입니까?

크리스토퍼 패스트

가능한 가장 간단한 적용 :

<Page
    x:Class="TestApp.MainPage"
    ...>
    <Grid>
        <TextBox />
    </Grid>
</Page>

질문 : 응용 프로그램 시작시 커서 (포커스)가 TextBox에 설정되는 것을 방지하는 우아한 방법이 있습니까?

확장하려면 : 내 진짜 문제는 TextBox가 포커스를받을 때 열리는 팝업이 있다는 것입니다. 내 PopUp에서 요소를 클릭하면 닫아야하지만 TextBox가 내 페이지의 첫 번째 포커스 가능한 요소이기 때문에 자동으로 포커스를 받고 PopUp이 즉시 다시 열립니다. 내가 생각하는 문제의 핵심은 위의 예에 나와 있습니다.

디케 이드 문

초점과 같은 다양한 속성에 의해 관리되고 IsTabStop, TabIndex, IsHitTestVisible,와 FocusManager클래스입니다. 창이 활성화되면 첫 번째 포커스 가능 요소에 초점을 맞추는 기본 제공 기능이 있으며이 동작은 일반적으로 사용자 지정할 수 없습니다.

페이지 자체와 같이 텍스트 상자 대신 초점을 맞출 다른 요소를 지정할 수 있습니다.

<Page IsTabStop="True">
    <TextBox/>
</Page>

이것은 페이지가 텍스트 상자 대신 초기 초점을 얻지 만 이제 페이지가 탭 동작에 참여하므로 약간 바람직하지 않습니다.

일반적으로 프레임 워크는 RootScrollViewer가 탭 정지가 아니더라도 (탭으로 포커스를받을 수 없음) 포커스가있는 컨트롤을 클릭 할 때 RootScrollViewer에 포커스를 설정합니다. 페이지로드시 RootScrollViewer에 초점을 맞출 수있는 경우 프레임 워크는 무언가에 초점 이 있음을 감지 하고 첫 번째 요소에 초점을 맞추려고 시도하지 않습니다.

<Page Loaded="onPageLoaded">
    <TextBox/>
</Page>
private ScrollViewer getRootScrollViewer()
{
    DependencyObject el = this;
    while (el != null && !(el is ScrollViewer))
    {
        el = VisualTreeHelper.GetParent(el);
    }

    return (ScrollViewer)el;
}

private void onPageLoaded(object sender, RoutedEventArgs e)
{
    getRootScrollViewer().Focus(FocusState.Programmatic);
}

이것은 텍스트 상자가 자동으로 초점을 맞추는 것을 방지하기 위해 내가 아는 가장 "우아한"방법입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

uWSGI 응용 프로그램 시작 / 중지에 감독자를 사용하는 방법은 무엇입니까?

분류에서Dev

OSX의 응용 프로그램 메뉴에 요소를 추가하는 방법은 무엇입니까?

분류에서Dev

lubuntu의 시작 응용 프로그램에 f.lux를 추가하는 방법은 무엇입니까?

분류에서Dev

시스템 응용 프로그램 (예 : 소프트웨어 센터)이 암호를 요청하지 않도록하는 방법은 무엇입니까?

분류에서Dev

그놈 3에서 응용 프로그램 메뉴를 편집하는 방법은 무엇입니까?

분류에서Dev

그놈 3에서 응용 프로그램 메뉴를 편집하는 방법은 무엇입니까?

분류에서Dev

시작 응용 프로그램의 순서를 변경하는 방법은 무엇입니까?

분류에서Dev

ASP.NET 응용 프로그램에서 OPTIONS 요청을 방지하는 방법은 무엇입니까?

분류에서Dev

특정 응용 프로그램에서 소리를 비활성화하는 방법은 무엇입니까?

분류에서Dev

mvc 응용 프로그램에서 로그인 페이지를 시작 페이지로 설정하는 방법은 무엇입니까?

분류에서Dev

Android의 특정 응용 프로그램에서 다중 열기를 피하는 방법은 무엇입니까?

분류에서Dev

응용 프로그램에서 QuickBlox 사용자 태그를 삭제하는 방법은 무엇입니까?

분류에서Dev

응용 프로그램에서 특수 문자를 표시하는 방법은 무엇입니까?

분류에서Dev

응용 프로그램에서 SIM 카드를 다시 초기화하는 방법은 무엇입니까?

분류에서Dev

CentOS에 로그인 한 후 응용 프로그램을 시작하는 방법은 무엇입니까?

분류에서Dev

백그라운드에서 BREW 응용 프로그램을 시작하는 방법은 무엇입니까?

분류에서Dev

다른 작업 공간에서 응용 프로그램을 시작하는 방법은 무엇입니까?

분류에서Dev

vb.net에서 Windows 서비스를 사용하여 시스템 시작시 응용 프로그램을 실행하는 방법은 무엇입니까?

분류에서Dev

Java를 사용하여 runnng Windows 응용 프로그램간에 전환하는 방법은 무엇입니까?

분류에서Dev

두 응용 프로그램에 하나의 포트를 사용하는 방법은 무엇입니까?

분류에서Dev

Linux에서 백그라운드로 응용 프로그램을 자동으로 시작하고 몇 단계를 진행하는 방법은 무엇입니까?

분류에서Dev

Windows 응용 프로그램에서 웹 응용 프로그램으로 데이터를 전달하는 방법은 무엇입니까?

분류에서Dev

다른 응용 프로그램에 웹캠 효과를 적용하는 방법은 무엇입니까?

분류에서Dev

Jhipster Angular 생성 응용 프로그램에서 전자를 사용하는 방법은 무엇입니까?

분류에서Dev

다른 응용 프로그램에 웹캠 효과를 적용하는 방법은 무엇입니까?

분류에서Dev

Windows에서 응용 프로그램별로 화면 밝기를 설정하는 방법은 무엇입니까?

분류에서Dev

UI5 1.38에서 다른 응용 프로그램의 구성 요소를 재사용하는 방법은 무엇입니까?

분류에서Dev

응용 프로그램에서 SharedPreferences를 얻는 방법은 무엇입니까?

분류에서Dev

로그인시 루트로 GUI 응용 프로그램을 시작하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    uWSGI 응용 프로그램 시작 / 중지에 감독자를 사용하는 방법은 무엇입니까?

  2. 2

    OSX의 응용 프로그램 메뉴에 요소를 추가하는 방법은 무엇입니까?

  3. 3

    lubuntu의 시작 응용 프로그램에 f.lux를 추가하는 방법은 무엇입니까?

  4. 4

    시스템 응용 프로그램 (예 : 소프트웨어 센터)이 암호를 요청하지 않도록하는 방법은 무엇입니까?

  5. 5

    그놈 3에서 응용 프로그램 메뉴를 편집하는 방법은 무엇입니까?

  6. 6

    그놈 3에서 응용 프로그램 메뉴를 편집하는 방법은 무엇입니까?

  7. 7

    시작 응용 프로그램의 순서를 변경하는 방법은 무엇입니까?

  8. 8

    ASP.NET 응용 프로그램에서 OPTIONS 요청을 방지하는 방법은 무엇입니까?

  9. 9

    특정 응용 프로그램에서 소리를 비활성화하는 방법은 무엇입니까?

  10. 10

    mvc 응용 프로그램에서 로그인 페이지를 시작 페이지로 설정하는 방법은 무엇입니까?

  11. 11

    Android의 특정 응용 프로그램에서 다중 열기를 피하는 방법은 무엇입니까?

  12. 12

    응용 프로그램에서 QuickBlox 사용자 태그를 삭제하는 방법은 무엇입니까?

  13. 13

    응용 프로그램에서 특수 문자를 표시하는 방법은 무엇입니까?

  14. 14

    응용 프로그램에서 SIM 카드를 다시 초기화하는 방법은 무엇입니까?

  15. 15

    CentOS에 로그인 한 후 응용 프로그램을 시작하는 방법은 무엇입니까?

  16. 16

    백그라운드에서 BREW 응용 프로그램을 시작하는 방법은 무엇입니까?

  17. 17

    다른 작업 공간에서 응용 프로그램을 시작하는 방법은 무엇입니까?

  18. 18

    vb.net에서 Windows 서비스를 사용하여 시스템 시작시 응용 프로그램을 실행하는 방법은 무엇입니까?

  19. 19

    Java를 사용하여 runnng Windows 응용 프로그램간에 전환하는 방법은 무엇입니까?

  20. 20

    두 응용 프로그램에 하나의 포트를 사용하는 방법은 무엇입니까?

  21. 21

    Linux에서 백그라운드로 응용 프로그램을 자동으로 시작하고 몇 단계를 진행하는 방법은 무엇입니까?

  22. 22

    Windows 응용 프로그램에서 웹 응용 프로그램으로 데이터를 전달하는 방법은 무엇입니까?

  23. 23

    다른 응용 프로그램에 웹캠 효과를 적용하는 방법은 무엇입니까?

  24. 24

    Jhipster Angular 생성 응용 프로그램에서 전자를 사용하는 방법은 무엇입니까?

  25. 25

    다른 응용 프로그램에 웹캠 효과를 적용하는 방법은 무엇입니까?

  26. 26

    Windows에서 응용 프로그램별로 화면 밝기를 설정하는 방법은 무엇입니까?

  27. 27

    UI5 1.38에서 다른 응용 프로그램의 구성 요소를 재사용하는 방법은 무엇입니까?

  28. 28

    응용 프로그램에서 SharedPreferences를 얻는 방법은 무엇입니까?

  29. 29

    로그인시 루트로 GUI 응용 프로그램을 시작하는 방법은 무엇입니까?

뜨겁다태그

보관