まず、ご指摘のとおり、ArgumentNullExceptionがスローされています。したがって、基本的に、ItemsSourceへの割り当てを行うときは、nullを提供します。つまり、オブジェクトページから受け取ったと思われるオブジェクトはnullです。
次に、ソースコードを提供していない場合、問題のデバッグを支援することは困難です。しかし、一般的に言えば、リストボックスが入力されている2ページ目にいるときに、ダミーデータを使用して(つまり、XAMLからではなく)コードビハインドからテストできますか?したがって、当面はデータの受け渡しを無視してください。2番目のページが読み込まれるときに、そのページのコードビハインドで作成したダミーデータがリストボックスに入力されていることを確認してください。それがうまくいけば、あなたの問題はもっと簡単です。
うまくいけば、これが役立ちます。
//-サンプルコードの追加-//
Firstpage.xaml
<ListBox x:Name="FirstListBox" Grid.Row="1" ItemsSource="{Binding}" SelectionChanged="HandleSelection">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" FontSize="32" Margin="12"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Firstpage.xaml.cs
FirstListBox.DataContext = new String[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" };
..。
private void HandleSelection(object sender, SelectionChangedEventArgs e)
{
String selection = (String)FirstListBox.SelectedItem;
NavigationService.Navigate(new Uri("/Secondpage.xaml?id=" + selection, UriKind.Relative));
}
Secondpage.xaml
<ListBox x:Name="OtherListBox" Grid.Row="1" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" FontSize="32" Margin="12"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Secondpage.xaml.cs
protected override void OnNavigatedTo(NavigationEventArgs e)
{
String id = null;
NavigationContext.QueryString.TryGetValue("id", out id);
if (id != null)
{
List<String> dummyData = new List<string>();
for (int i = 0; i < 12; i++)
{
dummyData.Add(id + " - " + i);
}
OtherListBox.DataContext = dummyData;
}
}
したがって、Firstpageにダミーのリストがあり、アイテムのいずれかをクリックすると、最初の選択から生成されたデータが入力された別のリストがある別のページに移動します。ご覧のとおり、この回答のコメントで説明したように、選択範囲をクエリ文字列パラメーターとして渡します。
うまくいけば、これであなたの問題が解決し、あなたがこの解決策をあなたの問題への答えとして受け入れることを楽しみにしています。