내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8의 프레임, 페이지 및 탐색 기능

2014-06-18

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

 

이 항목에서는 Windows Phone 탐색 모델과 프레임 및 페이지 아키텍처의 일부 기능에 대해 설명합니다. 이 기능들은 Windows Phone 의 맨 처음 출시 이후 추가되었거나 향상되었습니다.

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

 

다음은 탐색 API의 기능 중 일부입니다.

탐색을 취소할 수 있는지 여부 결정

NavigatingCancelEventArgs 클래스에는 요청된 탐색을 취소하도록 설정할 수 있는 Cancel 속성이 포함되어 있습니다. 하지만 특정 시나리오(예: 사용자가 아닌 시스템에서 탐색이 시작된 경우)에서는 탐색을 취소할 수 없으며, Cancel 속성을 설정해도 아무런 효과가 없습니다. 앱이 이러한 시나리오를 잘못 처리하는 경우, 탐색을 취소하고 현재 페이지를 유지할 수 없으므로 사용자는 변경 사항을 잃을 수 있습니다. 탐색을 취소할 수 없다면 사용자의 변경 내용을 저장할 수 있는 다른 방법이 있어야 합니다.

탐색을 실제로 취소할 수 있는지 확인하기 위해 Boolean 속성인 IsCancelableNavigatingCancelEventArgs 클래스에서 사용할 수 있습니다. 이 속성이 true로 설정되어 있으면 탐색을 취소할 수 있고, 그렇지 않으면 탐색을 취소할 수 없습니다. 다음 코드는 탐색을 취소할 수 있는지 확인하고 사용자에게 탐색을 취소할지 묻는 방법을 보여 줍니다.


        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
        {
            base.OnNavigatingFrom(e);

            // If the navigation can be canceled, ask the user if they want to cancel
            if (e.IsCancelable)
            {
                MessageBoxResult result = MessageBox.Show("Do you want to stay here?", "Confirm Navigation from Page", MessageBoxButton.OKCancel);
                if (result == MessageBoxResult.OK)
                {
                    // User wants to stay here
                    e.Cancel = true;
                    return;
                }
            }

        }

페이지 전환을 위한 탐색 방향 감지

페이지 전환 애니메이션은 탐색의 방향(앞으로 또는 뒤로)에 따라 달라집니다. 진행 중인 탐색 유형을 나타내기 위해 NavigationMode 클래스에 읽기 전용 NavigationMode 속성과 이 속성의 값을 제공할 생성자 오버로드를 사용할 수 있습니다. 이 생성자를 사용하지 않을 경우 NavigationMode의 기본 값은 New로서, 이것은 사용자가 새 콘텐츠로 이동함을 가리킵니다.

외부 앱으로의 이동 감지

탐색 이벤트에 전달된 URI가 app://external/.이므로, 응용프로그램은 외부 응용프로그램에 대한 탐색을 감지할 수 있습니다. 그러나 Windows Phone 의 최초 릴리스에는 들어오는 탐색이 외부 원본에서 시작되었는지를 감지할 직접적인 방법이 없었습니다. 이 정보는 다양한 유형의 탐색을 위해 애니메이션을 사용자 지정하는 데 유용합니다.

이 기능을 사용하기 위해 Boolean 속성인 IsNavigationInitiatorNavigationModeNavigatingCancelEventArgs 클래스에서 사용할 수 있습니다. 이 속성은 외부 응용프로그램이나 시작 화면으로(부터) 탐색이 수행되는 모든 경우에 false로 설정되지만, 응용프로그램 내부에서 탐색이 수행되면 true로 설정됩니다. 이 속성 값을 설정할 수 있도록 새로운 생성자 오버로드도 제공됩니다. 설정되지 않는 경우 기본값은 true이고, 이것은 탐색이 앱 내부에서 수행됨을 가리킵니다.

페이지 스택은 응용프로그램의 탐색 기록입니다. 페이지 스택의 각 항목은 페이지를 나타내는 URI입니다. 페이지의 페이지 스택에는 항목이 여러 개 있을 수 있지만, 각 항목은 페이지의 다른 인스턴스를 참조합니다. 다음은 NavigationService API에서 지원하는 시나리오입니다.

  • 현재 페이지를 새 페이지로 바꾸려면 새 페이지까지 앞으로 이동한 다음 페이지 스택의 맨 위를 제거합니다.

  • 지정된 페이지(일반적으로 첫 페이지)까지 모든 페이지를 제거하려면 삽입된 페이지를 모두 제거하고 첫 페이지까지 다시 탐색합니다.

  • 전체 페이지 스택을 지우고 지정된 페이지로 바꾸려면, 새 페이지까지 앞으로 이동한 다음 페이지 스택의 모든 항목을 제거합니다.

페이지 스택 작업에 대한 자세한 내용은 Windows Phone 8의 페이지 스택을 사용하여 탐색하는 방법을 참조하세요.

페이지 스택 속성

BackStack 속성은 페이지 스택의 항목 목록을 반환합니다.

RemoveBackEntry 메서드

RemoveBackEntry 메서드는 페이지 스택에서 가장 최근 항목을 제거하며, 제거할 항목이 더 이상 없으면 InvalidOperationException이 발생합니다. 둘 이상의 항목을 제거하려면 이 메서드를 여러 번 호출해야 합니다. 이 API는 동기식이며 UI 스레드에서 호출되어야 합니다.

JournalEntryRemoved 이벤트

JournalEntryRemoved 이벤트는 NavigationService 클래스에서 사용할 수 있습니다. 이 이벤트는 Navigated 이벤트가 발생한 후 RemoveBackEntry 작업 중 또는 정상적인 후방 탐색 작업 중에 발생합니다.

JournalEntryRemovedEventArgs 클래스에는 단일 읽기 전용 속성인 Entry(제거되는 항목의 업무 일지 항목)가 포함되어 있습니다.

다음은 PhoneApplicationFramePhoneApplicationPage 클래스의 기능 중 일부입니다.

PhoneApplicationFrame

PhoneApplicationFrame에는 NavigationService 클래스와 동일한 멤버 중 일부가 있습니다. 여기에는 RemoveBackEntry() 메서드, JournalEntryRemoved 이벤트 및 BackStack 속성이 포함됩니다. 이러한 모든 멤버는 NavigationService의 멤버와 동일하게 작동합니다.

또한 BackKeyPress 이벤트는 PhoneApplicationFrame 클래스에서 사용할 수 있습니다. 이 프레임은 활성 페이지가 수신하기 직전에 이벤트를 발생시킬 수 있으며, 키 누르기는 취소할 수 있습니다.

PhoneApplicationPage

OnRemovedFromJournal(JournalEntryRemovedEventArgs) 메서드는 RemoveBackEntry() 메서드를 통해 업무 일지에서 제거된 후 페이지에서 호출됩니다. 또한 정상적인 후방 탐색에서 OnNavigatedFrom(NavigationEventArgs) 재정의 후에도 호출됩니다. 이 이벤트의 목적은 업무 일지에서 제거되고 있어 리소스를 해제하고 가비지 수집에 포함될 수 있음을 페이지에 알리는 것입니다. 이 이벤트를 사용하면 모든 정리 코드를 단일 이벤트에 포함할 수 있습니다. 하지만, 데이터를 저장하거나 애니메이션을 재생하거나, 페이지 상태를 로드 및 저장하는 데 이 이벤트를 사용해서는 안 됩니다. 이러한 작업은 탐색 이벤트에 속합니다.

JournalEntry 클래스를 사용할 수 있습니다. 또한 Source 속성에 액세스할 수 있으며, 이 속성은 읽기 전용입니다.

시스템 트레이에서 응용프로그램 모음과 비슷한 불투명도와 색을 지원합니다. 시스템 트레이의 연결된 다음 public 읽기/쓰기 속성은 PhoneApplicationPage 인스턴스에 연결할 수 있습니다.

ProgressIndicator

시스템 트레이의 ProgressIndicator는 작업의 진행률을 가리키는 데 사용됩니다.

페이지 레이아웃에 영향을 주지 않고 ProgressIndicator를 사용하려면 SystemTrayOpacity속성 값을 0(영)으로 설정합니다.

ProgressIndicator에는 다음과 같은 public 속성이 있습니다.

  • IsVisible – 표시줄이 활성 상태인지 확인합니다.

  • Text – 작업이 수행된 때를 표시하는 짧은 텍스트 문자열입니다.

  • Value – 값을 0에서 1로 진행시킵니다.

  • IsIndeterminate – true이면, 진행률 표시기를 몇 개의 스크롤 점으로 렌더링합니다.

시스템 트레이를 숨기면 표시기 자체의 표시 여부와 상관없이 진행률 표시기가 숨겨집니다.

표시:
© 2014 Microsoft