-2

私はWindowsPhone7の開発に不慣れです。

私の最初のアプリケーションでは、異なるページにチェックボックスが入った2つのリストボックスを作成し、最初のリストボックスにデータを入力したいと思います。最初のリストボックスでいくつかのレコードを選択すると、その特定のレコードを別のリストボックスに追加する必要があります。listbox.ItemSourceリストボックスの選択を行い、そのリストを別のページに割り当てようとすると、selecteditemをパラメーター経由で別のページに渡しますArgumentNullException

この問題を解決するのを手伝ってください。

ありがとう。

4

3 に答える 3

2

まず、ご指摘のとおり、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にダミーのリストがあり、アイテムのいずれかをクリックすると、最初の選択から生成されたデータが入力された別のリストがある別のページに移動します。ご覧のとおり、この回答のコメントで説明したように、選択範囲をクエリ文字列パラメーターとして渡します。

うまくいけば、これであなたの問題が解決し、あなたがこの解決策をあなたの問題への答えとして受け入れることを楽しみにしています。

于 2012-09-08T06:57:27.440 に答える
0
public partial class MainPage : PhoneApplicationPage


    void MainPage_Loaded(object sender, RoutedEventArgs e)
    {

        //adding data to listbox on page load event//
        for (int i = 0; i < 20; i++)
        {
            id = i + 1;
            name = "productname" + i;
            quantity = i + 2 / 2;
            productlist.Add(new ProductList(id, name, quantity));
        }
        lstpro.ItemsSource = productlist;

    }
    private void button1_Click(object sender, RoutedEventArgs e)
    {
          //using   PhoneApplicationService.Current.State to store the list//
          PhoneApplicationService.Current.State["yourparam"] = lstpro.SelectedItems;

          NavigationService.Navigate(new Uri("/res.xaml", UriKind.Relative))
    }

}
于 2012-09-10T05:07:03.083 に答える
0

そして2ページ目で...

<`プライベートIListiList1;

  //In The onNavigatedTo Event assign the stored list to the variable//      
 protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {


         var i= PhoneApplicationService.Current.State["yourparam"];
         iList1 = (IList) i ;//convert object to list//
         lstpro.ItemsSource = iList1;

    }'
于 2012-09-10T05:15:09.440 に答える