안녕하세요. 이동규(LiveDK)입니다.

이번 포스팅(라기 보다 간단한 팁에 가까운...)에서는 지난번 Windows Phone - #4 Navigation 에서 페이지 이동에 대해 알아본것과 관련이 있는 내용입니다. 페이지 이동시 화면만 전환 하는것이 아니라 간단한 메시지(string)도 함께 넘겨 활용하는 방법에 대해서 학습 해보려 합니다.

아래 그림1과 같이 MainPage에서는  TextBox 하나와 Button 하나를 추가하여 간단하게 디자인을 완성시킵니다. 또한 이동할 페이지 Page2 를 프로젝트에 추가하여 줍니다. Page2에는 테스트를 위해 TextBlock 하나를 추가시켜줍니다.

그림1. Passing Parameters Design

이어서 Button에 대한 클릭 이벤트를 주어 아래 코드1과 같이 작성해줍니다. Navigate 메서드에 대한 내용은 위에서 설명한 지난 포스팅(Windows Phone - #4 Navigation)에 있으니 참고 하시면 됩니다.

private void tbTest_Click(object sender, RoutedEventArgs e)

{

    string name = "LiveDK";

    Uri uri = new Uri("/Page2.xaml" + "?name=" + name, UriKind.Relative);

    this.NavigationService.Navigate(uri);
} 

코드1. Navigate Button Event

코드1에서 눈여겨 봐야할 부분은 uri 부분입니다. 단순히 페이지명만 적는것이 아니라 ? 기호를 붙여 일반 웹에서 사용하듯이 QueryString 형식으로 보내는 것입니다.

다음으로 코드2에서는 Page2에 대한 내용입니다. 이곳에서는 MainPage에서 넘겨준 QueryString을 분석해야 합니다. 하지만 어느 시점에서 코드를 작성해야 하는지 모르실 것입니다. 그 장소는 바로 Override 이벤트인 OnNavigatedTo 에서 처리하게 됩니다.

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)

{

    base.OnNavigatedTo(e);

 

    IDictionary<string, string> parameters = this.NavigationContext.QueryString;

    textBlock1.Text = parameters["name"];
}

코드2. OnNavigatedTo

NavigationContext.QueryString의 값을 받아 코드2와 같이 처리하면 넘겨받은 QueryString의 name 값을 얻어낼 수 있습니다. 결과는 아래 그림2과 같습니다.

그림2. 결과화면

참고자료
Programming Windows Phone 7 by Charles Petzold - http://www.charlespetzold.com/phone/
MSDN - Perform Page Navigation - http://bit.ly/fezrUf
Posted by Dongkyu
,