2010-11-20 26 views
1

大家好我有一個列表框MainListBox我在哪裏添加項目動態。 現在我想要導航到DetialsPage.xaml.cs當我在列表框中選擇一個項目。 我可以在那裏顯示關於所選項目的信息。Silverlight,ListBox導航到新的頁面與對象可能嗎?

private void SetListBox() 
{ 
    foreach (ToDoItem todo in itemList) 
    { 
     MainListBox.Items.Add(todo.ToDoName); 
    } 
} 

MainListBox_SelectionChanged( 「

// Handle selection changed on ListBox 
private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    // If selected index is -1 (no selection) do nothing 
    if (MainListBox.SelectedIndex == -1) 
     return; 

    // Navigate to the new page 
    NavigationService.Navigate(new Uri("/DetailsPage.xaml?selectedItem=" + MainListBox.SelectedIndex, UriKind.Relative)); 

    // Reset selected index to -1 (no selection) 
    MainListBox.SelectedIndex = -1; 
} 
在DetailsPage.xaml.cs

通過視覺工作室2010的Silverlight窗戶7手機產生)是下一個方法。(」 通過視覺工作室2010的Silverlight窗戶7產生電話) 我知道下面的方法不會做我所嘗試的。

// When page is navigated to set data context to selected item in list 
protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    string selectedIndex = ""; 
    if (NavigationContext.QueryString.TryGetValue("selectedItem", out selectedIndex)) 
    { 
     int index = int.Parse(selectedIndex); 
     DataContext = App.ViewModel.Items[index]; 
    } 
} 

我想訪問的selectedIndex和調用我的我的對象,它是在MainListbox 所以Basicly的方法: Mainlistbox =>選擇項=>發送項目詳情頁面=>詳細信息頁面的訪問物品和通話方式上的物品(物品)

我確定這是一個基本問題,難以找到任何具體細節。我想補充說,這是我的第一個Windows Phone 7應用程序。

回答

0

有很多方法,你可以從一個頁面傳遞一個對象頁:

  1. 序列化和反序列化像丹尼斯說,但是這,雖然feasable,是不實際的,除非你要保存的對象隔離存儲並在稍後檢索。

  2. 在App.cs類中放置一個對象,所有頁面都可以訪問它。在主頁面中設置對象,從「詳細信息」頁面中檢索它。

放入App.cs中的代碼:MyObject selectedObject;

放入MasterPage.cs中的代碼:application.selectedObject = MainListBox.selectedItem;

放入DetailsPage.cs中的代碼:MyObject selectedObject = application.seletedObject;

  1. 你可以在你的LayoutRoot的DataContext中設置Object,但是我沒有代碼在我頭上。
0

答案在這裏很簡單 - 你不能直接傳遞一個對象到另一個頁面。您可以將其序列化爲JSON或XML,然後在目標頁面上將其反序列化,但序列化的項目仍然必須作爲參數傳遞。

0

而不是發送選定的索引作爲查詢字符串參數,您可以發送對象或類似的ID,唯一可以識別該對象的東西。

然後在詳細信息頁面中,您可以從主列表框中獲取其數據的相同數據源(在您的案例「itemList」中可能來自IsolatedStorage)獲取正確的對象。

如果itemList被實例化並僅保存在主頁面中,那麼您將無法通過詳細信息頁面的ID獲取該項目。所以在這種情況下,您需要將itemList移動​​到某個靜態或應用程序級存儲。

HTH