Windows Phone 8의 앱 페이지 모델

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

Windows Phone 앱은 탐색 스택에 있는 페이지로 구성되며, 사용자는 하드웨어의 뒤로 버튼을 사용해 이러한 페이지에 액세스할 수 있습니다. 앱에서 페이지를 너무 많이 사용하면 불필요한 탐색 스택이 생성되어 성능과 안정성을 저하시키는 등 여러 가지 문제가 발생할 수 있습니다. 개발자는 앱에서 페이지를 효율적으로 사용하는 탐색 모델을 따르고, 다른 방법을 구현할 수 있는 경우에는 페이지 사용을 제한해야 합니다. 이 항목에서는 앱에 효율적인 페이지 모델을 만들기 위한 지침과 모범 사례를 설명합니다.

이 항목에는 다음 단원이 포함되어 있습니다.

 

Windows Phone 앱은 페이지나 화면 중 하나 또는 두 요소의 조합으로 이루어진 컬렉션으로 간주할 수 있습니다. 아래에는 Windows Phone 용 앱 페이지 모델 컨텍스트에서 "페이지"와 "화면"의 정의가 나와 있습니다.

  • 페이지 - 사용자가 인식할 수 있는 영구적인 상태의 컬렉션입니다. 정보, 기억할 만한 콘텐츠 또는 다른 페이지에 대한 링크를 포함하는 페이지로 볼 수 있습니다.

  • 화면 - 기억할 만한 콘텐츠를 포함하지 않는 시작 화면, 대화 상자 또는 팝업 창 등의 일반 UI 화면입니다. 사용자가 인식할 수 있는 영구적인 상태의 컬렉션이 아닙니다.

다음 그림은 페이지와 화면이 혼합된 가상 앱 구조를 보여 줍니다.

AP_CoreCon_PageModel

이 그림에서 앱은 다음과 같은 페이지로 구성됩니다.

  • 홈 페이지

  • 위젯 페이지

  • 위젯 세부 정보 페이지(피벗 포함)

  • 가젯 세부 정보 페이지

  • 검색 페이지

  • 설정 페이지

시작 화면과 로그인 화면은 페이지가 아닙니다. 페이지의 정의에 따르면 사용자가 인식할 수 있는 영구적 상태의 컬렉션을 포함해야 하기 때문입니다. 예를 들어 시작 화면은 "상태"를 포함하지 않습니다. 단순히 앱을 실행하기 전 자리 표시자로 사용됩니다. 로그인 화면도 자격 증명을 입력하라는 메시지만 표시하므로 상태 데이터를 포함하지 않습니다. UI를 페이지로 지정할지를 결정할 때는 다음 사항을 고려할 수 있습니다.

  • 사용자가 명시적으로 페이지를 방문하려 합니까?

  • 사용자가 이 페이지에 방문했다는 사실을 기억하고 다시 방문하고자 할지 여부

시작 화면과 로그인 화면은 위의 기준에 부합하지 않으므로 페이지로 간주되지 않습니다.

위젯 세부 정보 페이지와 가젯 세부 정보 페이지에는 모두 원형 화살표가 표시되어 있습니다. 앞서 설명한 시나리오에서는 새 페이지로 이동하지 않고도 "위젯"이나 "가젯" 사이를 전환할 수 있습니다. 이 동작은 Microsoft Outlook 앱에서 사용자가 화살표를 클릭하여 같은 창 안에서 이전 메일과 다음 메일을 전환할 수 있는 동작과 비슷합니다.

탐색

Windows Phone 의 탐색은 페이지 간 전환으로 정의할 수 있습니다. 화살표가 표시된 그림에 나와 있는 것처럼, 홈 페이지에서 위젯 목록 페이지로 전환하거나 검색 페이지에서 가젯 세부 정보 페이지로 전환하는 등 여러 전환 단계가 있습니다. 그러나 모든 전환 단계가 실제 탐색으로 간주되지는 않습니다. 시작 화면에서 홈 페이지로 이동하거나 로그인 화면에서 다른 화면으로 여러 번 이동하는 경우를 예로 들 수 있습니다. 이러한 전환이 탐색으로 간주되지 않는 이유는 앞서 설명한 대로 시작 화면이나 로그인 화면은 페이지가 아니기 때문입니다. 페이지가 아닌 화면에서의 이동을 전환이라고 합니다.

Windows Phone 에서 정의한 페이지, 화면 및 탐색의 개념을 적용하여 가급적 추가 페이지를 사용하지 않고도 여러 시나리오를 처리할 수 있도록 앱을 설계해야 합니다. 이 섹션에서는 효율적인 페이지 모델을 사용하기 위한 모범 사례를 제공합니다.

  • 화면 및 탐색이 아닌 전환 - 로그인 화면과 같은 일시적인 UI의 경우 팝업 컨트롤을 사용하여 전체 탐색이 필요한 별도의 화면을 구현하지 않고 화면의 일부를 차지하는 콘텐츠를 표시할 수 있습니다. 코드에 BackKeyPress 이벤트를 추가하고 팝업 창이 표시되는 동안 e.Cancel을 true로 설정하면 사용자가 뒤로 버튼을 사용해 대화 상자를 닫을 수 있습니다.

  • 여러 콘텐츠 뷰 - 여러 콘텐츠 섹션을 표시하는 페이지의 경우 페이지의 컨트롤을 새 DataContext에 다시 바인딩하기만 하면 탐색을 사용하지 않고도 여러 콘텐츠 사이를 전환할 수 있습니다. 또한 페이지 내에서 여러 UserControl 인스턴스를 로드하거나 기타 메커니즘을 사용해 다시 바인딩함으로써 새 콘텐츠를 표시할 수도 있습니다. 사용자가 항목 앞뒤를 전환하는 데 사용하는 방법을 선택할 수 있습니다. 예를 들면 이전 및 다음 앱 표시줄 버튼을 사용할 수 있습니다. 그러나 로컬 전환에는 뒤로 버튼을 너무 많이 사용하지 않는 것이 좋습니다.

  • 상태 저장 및 삭제 표시 - 지정된 페이지에서 수행하는 전환의 로컬 기록을 저장하면 앱에 삭제 표시를 할 때 사용자가 지금까지 수행한 단계를 다시 추적할 수 있습니다. 이전/다음 탐색 등의 간단한 시나리오에서는 페이지 상태를 현재 인덱스에 저장만 하면 됩니다. 이와 같이 상태를 저장하고 NavigationContext API를 함께 사용하면 삭제 표시된 상태에서 되돌아올 때 데이터 집합을 이동하는 데 필요한 모든 정보가 제공됩니다. 연결된 항목을 자유롭게 탐색하는 방식처럼 로컬 전환 기록이 좀 더 복잡한 앱의 경우 이 기록의 일부를 페이지 상태에 저장하되, 저장하는 항목을 적절히 제한할 수 있습니다. 이때 사용자가 하드웨어의 뒤로 버튼을 누르면 이전 페이지로 돌아가야 합니다. 이전에 보았던 항목으로 돌아가서는 안 됩니다. 자세한 내용은 Windows Phone 8의 시작, 다시 시작 및 멀티태스킹을 참조하세요.

  • 탐색 후방 스택 - 후방 스택의 페이지는 메모리에 보관됩니다. 앱은 큰 이미지나 캐시된 데이터를 해제하는 등의 방법으로 후방 스택의 페이지에 사용되는 메모리의 양을 최소화해야 합니다. 자세한 내용은 Windows Phone 8의 프레임, 페이지 및 탐색 기능을 참조하세요.

  • 아래 표에는 앱에서 보통 페이지로 간주되는 항목에 대한 정보가 나와 있습니다.

    화면 유형

    페이지

    설명

    시작 화면

    아니요

    시작 환경의 일시적인 항목이며 사용자가 탐색할 수 없습니다.

    파노라마 환경

    Windows Phone 앱에서 홈 화면에 일반적으로 사용되는 방식입니다.

    세부 정보 페이지

    이 페이지는 쿼리 문자열을 통한 매개 변수가 있는 데이터 중심 앱에 공통적으로 사용됩니다.

    피벗 항목

    아니요

    피벗 항목은 콘텐츠에 사용되는 피벗 컨트롤의 하위 구성 요소입니다.

    로그인 또는 오류 대화 상자

    아니요

    앱 상태를 통해 트리거되는 일시적인 UI이며 사용자가 직접 탐색하지 못합니다.

    항목 열거

    아니요

    유사한 콘텐츠를 탐색 수단이 아닌 "현재 위치" 작업으로 찾는 데 사용됩니다.

  • 다음 표에서는 다양한 유형의 UI 구현을 처리하는 데 사용할 수 있는 방법을 요약하여 보여 줍니다.

    UI 유형

    구현

    뒤로 버튼 동작

    삭제 표식 동작

    페이지

    PhoneApplicationPage 컨트롤

    뒤로 버튼을 누르면 자동으로 돌아가거나 앱이 종료됩니다. 데이터가 손실된 경우를 제외하고는 재정의할 수 없습니다.

    자동으로 후방 스택에 유지됩니다.

    화면의 일시 UI

    팝업 또는 자식 창

    앱이 팝업 창을 취소하도록 재정의되어야 합니다. 뒤로 버튼을 누르면 화면 키보드 및 MessageBox 컨트롤이 자동으로 취소됩니다.

    앱이 탐색 도중 팝업 창을 종료하거나 취소해야 합니다.

    항목 열거

    UserControl

    해당 없음: 부모 페이지 내에서 호스팅됩니다.

    앱이 활성 항목을 적절하게 저장해야 합니다.

표시:
© 2014 Microsoft