2013-01-07 23 views
0

我是一名學生,目前正在做窗口電話項目。基本上,我創建了一個圖書館應用程序。問題是,當我使用listpicker作爲我想要瀏覽的房間的選項時,使用每個選項的整合按鈕。我希望每個按鈕都能讓我看到不同的縱向頁面。例如,當我按下「101室」選擇按鈕時,它會將我引導至「101頁」,如果選擇「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

由於您的問題不太清楚,我假設您知道如何獲取該項目,而您的問題是如何導航到正確的頁面。

單擊處理程序做以下

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)); 
} 

在的OnNavigatedTo處理程序爲您的房間頁面,那麼你可以這樣做:

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 
     } 
     //... 
    } 

如果你真的想瀏覽到您一個完全不同的頁面只需要修改導航Uri

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

注意:但通常你只是想根據傳遞給它的數據來調整頁面的內容。

+0

非常感謝您的詳細介紹。讓我的一天。 –