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

本文关键字:WP8 新页面 SelectedItems 属性 获取 | 更新日期: 2023-09-27 17:50:50

我想做的是:当用户单击列表框中的一个项目时,我想获得项目的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);
            }
        }
    }

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

我认为问题出在这一行:

Pets selectedAnimal = lstCats.SelectedItem as Pets;

这里的问题是,您的ListBox控件具有将Animal s作为其SelectedItem s的项目。您要做的是将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));
}