获取SelectedItems的属性并将其传递给WP8中的新页面

时间:2014-03-17 19:43:35

标签: c# windows-phone-7 windows-phone-8 observablecollection

我要做的是:当用户点击列表框中的项目时,我想获取项目的ID号,这是一个属性。然后,我想将此ID传递给另一个显示相关数据的页面。

这是我必须尝试执行此操作的代码:

private void lstCats_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
        Pets selectedAnimal = lstCats.SelectedItem as Pets;
        NavigationService.Navigate(new Uri("/ViewPet.xaml?msg=" + selectedAnimal.ID, UriKind.Relative));
}

然后在第二页上,我要显示数据,我有以下内容:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);

        string msg = "";

        if (NavigationContext.QueryString.TryGetValue("msg", out msg))
        {
            id = Convert.ToInt16(msg);

            DisplayDetails();
            DisplayImage();
        }
    }

从我能说的问题出现在第一页,因为第二页在链接到其他页面时工作正常,我没有使用列表框等。

感谢任何帮助。感谢。

编辑:我用来填充列表框的代码:

private void DisplayCats()
    {
        foreach (Pets temp in thisApp.pets)
        {
            if (temp.Category.Contains("Cat"))
            {
                Animal animal = new Animal() { Details = temp.Name + "\n" + temp.Category + " / " + temp.Subcategory + "\n€" + temp.Price.ToString(), ImageURI = temp.Image };
                lstCats.Items.Add(animal);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

我认为问题在于这一行:

Pets selectedAnimal = lstCats.SelectedItem as Pets;

问题在于,您的ListBox控件的AnimalSelectedItem项为ListBox。您要做的是将private void DisplayCats() { foreach (Pets temp in thisApp.pets) { if (temp.Category.Contains("Cat")) { lstCats.Items.Add(temp); } } } 与宠物绑定,而不是绑定项目:

Animal


<强>更新

假设您想要与private void DisplayCats() { foreach (Pets temp in thisApp.pets) { if (temp.Category.Contains("Cat")) { //note that I added the ID property --v Animal animal = new Animal() { ID = temp.ID, Details = temp.Name + "\n" + temp.Category + " / " + temp.Subcategory + "\n€" + temp.Price.ToString(), ImageURI = temp.Image }; lstCats.Items.Add(animal); } } } 个对象绑定,您可以执行以下操作:

private void lstCats_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    Animal selectedAnimal = lstCats.SelectedItem as Animal;
    NavigationService.Navigate(new Uri("/ViewPet.xaml?msg=" + selectedAnimal.ID, UriKind.Relative));
}

然后您的事件处理程序应如下所示:

{{1}}