2010-11-20 6 views
1

こんにちはすべて私はリストボックスを持ってMainListBox私は動的に項目を追加します。 これで、リストボックス内の項目を選択すると、DetialsPage.xaml.csに移動します。 ここで、選択したアイテムに関する自分の情報を表示できます。 (silverlight、オブジェクトを使用した新しいページへのListBoxナビゲーション?

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

MainListBox_SelectionChanged "DetailsPage.xaml.csで

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

WindowsのVisual Studio 2010のシルバー7電話機によって生成される)、次の方法である。(" Windows 7のためのVisual Studio 2010 Silverlightで生成します電話) 以下の方法は私が試したことをしないことを知っています。

// 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 =>選択項目=>詳細にそのアイテムを送信するページ=>詳細ページへのアクセスアイテムとオブジェクト(オブジェクト)のメソッドを呼び出す

これは基本的な質問であると確信しています。私はこれが私の最初の窓の電話7アプリだと付け加えたいと思います。

答えて

0

ありますが、ページからページへオブジェクトを渡すことができる多くの方法があります:デニスが言ったよう

  1. シリアル化と逆シリアル化するには、しかし、あなたがオブジェクトを保存する場合を除き、これは、feasableものの、実用的ではありません隔離されたストレージとそれを後で取得します。

  2. すべてのページからアクセス可能なオブジェクトをApp.csクラスに配置します。オブジェクトをマスターページに設定し、詳細ページから取得します。

App.csに配置するコード:MyObject selectedObject;

MasterPage.csに入れるコード:application.selectedObject = MainListBox.selectedItem;

DetailsPage.csに入れるコード:MyObject selectedObject = application.seletedObject;

  1. ObjectをLayoutRootのDataContextに設定できますが、私の頭の上にそのコードはありません。
0

答えは簡単です。オブジェクトを別のページに直接渡すことはできません。 JSONまたはXMLにシリアル化してからターゲットページで逆シリアル化できますが、シリアル化された項目は引き続きパラメータとして渡す必要があります。

0

代わりにクエリ文字列パラメータとしてのselectedIndexを送るのは、オブジェクトまたは同様、オブジェクトを一意に識別することができます何かのためにIDを送信することができます。

詳細ページでは、メインリストボックスからデータを取得するのと同じデータソースから(たとえば、IsolatedStorageなどの「itemList」の場合)、正しいオブジェクトを取得できます。

itemListがインスタンス化され、メインページ内にのみ保持されている場合は、詳細ページからIDで項目を取得できません。その場合、itemListをいくつかの静的またはアプリレベルのストレージに移動する必要があります。

HTH

関連する問題