수색…


소개

응용 프로그램이 여러 페이지 / 화면을 갖자 마자 탐색 할 수있는 방법이 필요합니다. UWP 응용 프로그램에서 탐색은 [프레임] [1] 컨트롤에 의해 처리됩니다. [Page] [2] 인스턴스를 표시하고 새 페이지 탐색을 지원하며 뒤로 및 앞으로 탐색을 위해 기록을 유지합니다. [1] : https://msdn.microsoft.com/en-us/library/windows/apps/ windows.ui.xaml.controls.frame.aspx [2] : https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.page.aspx

프레임 만들기

프레임은 다른 컨트롤과 마찬가지로 만들어집니다.

<Frame x:Name="contentRoot"
       Navigated="OnNavigated"
       Navigating="OnNavigating" />

내비게이션 / 내비게이션 이벤트는 인터셉트되어 내비게이션을 취소하거나 뒤로 버튼을 표시 / 숨길 수 있습니다.

private void OnNavigating(object sender, NavigatingCancelEventArgs e)
{
    if(contentRoot.SourcePageType  == e.SourcePageType && m_currentPageParameter == e.Parameter)
   {
       // we are navigating again to the current page, we cancel the navigation
       e.Cancel    = true;
   }
}

private void OnNavigated(object sender, NavigationEventArgs e)
{
    // user has navigated to a newest page, we check if we can go back and show the back button if needed.
    // we can also alter the backstack navigation history if needed
    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = (contentRoot.CanGoBack ? AppViewBackButtonVisibility.Visible : AppViewBackButtonVisibility.Collapsed);  
}

최신 페이지로 이동

가장 새로운 페이지로 이동하기 위해 프레임에서 Navigate () 메소드를 사용할 수 있습니다.

contentRoot.Navigate(typeof(MyPage), parameter);

여기서 contentRootFrame 인스턴스이고 MyPagePage를 상속받은 컨트롤입니다.

MyPage 에서 탐색이 완료되면 (즉, 사용자가 페이지를 시작할 때 ) OnNavigatedTo () 메서드가 호출되어 페이지 데이터로드를 트리거하거나 최종화 할 수 있습니다. 페이지를 떠날 때 OnNavigatedFrom () 메서드가 호출되어 릴리스 해야하는 것을 릴리스 할 수 있습니다.

public class MyPage : Page
{
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        // the page is now the current page of the application. We can finalized the loading of the data to display
    }

    protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        // our page will be removed from the screen, we release what has to be released
    }
}

OnNavigatingFrom을 사용하여 탐색 요청 확인

private bool navigateFlag = false;

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

    if (!navigateFlag)
        {
            e.Cancel = true;

            var dialog = new MessageDialog("Navigate away?", Confir,);
            dialog.Commands.Add(new UICommand("Yes", null, 0));
            dialog.Commands.Add(new UICommand("No", null, 1);

            dialog.CancelCommandIndex = 1;
            dialog.DefaultCommandIndex = 0;

            var result = await dialog.ShowAsync();

            if (Convert.ToInt16(result.Id) != 1)
            {
                navigateFlag= true;
                this.Frame.Navigate(e.SourcePageType);
            }
           
        }

    }


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow