2013-01-07 2 views
0

나는 학생이며 현재 창 전화로 프로젝트를 진행 중이다. 기본적으로 저는 도서관 앱을 만들고 있습니다. 문제는 listpicker를 사용할 때 각 선택 항목에 대한 intergrate 버튼을 사용하여 탐색하려는 방의 선택 사항입니다. 나는 각 단추가 다른 초상화 페이지로 나를 인도 해주기를 바란다. 예를 들어 "room 101"선택에서 버튼을 누르면 "101 페이지"로, "room 102"가 선택되면 "102 페이지"가 ​​열립니다. 여기 내 C# 코드선택 버튼이있는 Listpicker

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Net; 
    using System.Windows; 
    using System.Windows.Controls; 
    using System.Windows.Navigation; 
    using Microsoft.Phone.Controls; 
    using Microsoft.Phone.Shell; 

    namespace Library 
{ 
public partial class location : PhoneApplicationPage 
{ 
    public class SampleData 
    { 
     public string Floor 
     { 
      get; 
      set; 
     } 
     public string Room 
     { 
      get; 
      set; 
     } 

    } 
    public location() 
    { 
     InitializeComponent(); 
     List<SampleData> dataSource = new List<SampleData>(); 
     dataSource.Add(new SampleData() { Floor = "First",Room = "101" }); 
     dataSource.Add(new SampleData() { Floor = "First",Room = "102" }); 
     dataSource.Add(new SampleData() { Floor = "First", Room = "103" }); 
     this.listPicker.ItemsSource = dataSource; 
    } 

      private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     SampleData data = (sender as Button).DataContext as SampleData; 
     ListPickerItem pressedItem = 
     this.listPicker.ItemContainerGenerator.ContainerFromItem(data) as ListPickerItem; 
      if (pressedItem != null) 
     { 
      this.NavigationService.Navigate(new Uri("/Room.xaml", UriKind.Relative)); 
     } 
    } 

} 
} 
+0

질문하고 싶은 질문이 있습니까? – PhoenixReborn

+0

다른 특정 페이지를 열려면 각 선택 항목 내에서 각 단추 명령을 어떻게 지정할 수 있습니까? –

답변

0

당신이 인 selectionchanged 이벤트를 기반으로하여 selectedItem 또는 selectedIndex의를 한 후에는 해당 페이지로 이동할 수 있습니다.

+0

죄송 합니다만, 귀하의 답변을 이해할 수 있는지 확실하지 않습니다. 조금 더 자세히 설명해 주실 수 있습니까? –

+0

SelectionChanged 이벤트를 사용하고 클릭 한 항목 사용자를 제공하는 SelectedItem 또는 SelectedIndex를 확인하십시오 –

0

질문이 분명하지 않기 때문에 항목을 가져 오는 방법을 알고 있고 올바른 페이지로만 이동하는 방법을 알고 있다고 가정합니다. 클릭 처리기에서

는 당신이 다음 할 수있는 룸 페이지에 대한 OnNavigatedTo 처리기에서
private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    SampleData data = (sender as Button).DataContext as SampleData; 
    this.NavigationService.Navigate(new Uri("/Room.xaml?roomId=" + data.Room.ToString(), UriKind.Relative)); 
} 

를 다음을 수행하십시오

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

     int roomId = (int)NavigationContext.QueryString["roomId"]; 

     if(roomId == 101) 
     { 
      //Modify page content for room 101 
     } 
     else if(roomId == 102) 
     { 
      //Modify page content for room 102 
     } 
     //... 
    } 

당신이 정말로 완전히 다른 페이지 당신로 이동하려면 내비게이션 만 수정하면됩니다.

this.NavigationService.Navigate(new Uri(string.Format("/Room{0}.xaml", data.Room), UriKind.Relative) 

참고 :하지만 일반적으로 전달 된 데이터에 따라 페이지 내용을 조정하기 만하면됩니다.

+0

감사합니다. 내 하루가되게 해. –