选择列表框后将对象从数据库传递到下一页

Pass object from DB to next page after listbox selection

我有一个列表框,其中填充了存储在 SQLite 数据库中的产品。列表框填充如下:

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        string navigatedFrom;
        base.OnNavigatedTo(e);
        navigatedFrom = (string)e.Parameter;

        if (navigatedFrom == "main")
        {
            var products = new ObservableCollection<Product>(data.GetProducts().ToList());

            foreach (var product in products)
            {
                ListBox.Items.Add("Product Name: " + product.ProductName + " Price: " + product.Price + " Quantity: " + product.Quantity);
            }
        }
        else
        {

        }
    }

列表框 selection 的处理方式如下:

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var product = ListBox.SelectedItem as Product;

        if (product != null)
        {
            Frame.Navigate(typeof(DetailsPage), product.Id);
        }

        ListBox.SelectedIndex = -1;
    }

当从列表框中 selected 产品时,应用程序应导航到详细信息页面,该页面显示 selected 产品对象的所有详细信息。当我 select 列表中的产品时,我的问题出现了,产品对象始终为空。如何确保产品对象以正确的格式填充正确的信息?

改变这个:

foreach (var product in products)
{
    ListBox.Items.Add("Product Name: " + product.ProductName + " Price: " + product.Price + " Quantity: " + product.Quantity);
}

foreach (var product in products)
{
    ListBox.Items.Add(product);
}

示例产品 class:

    public class Product
    {
        public string ProductName { get; private set; }
        public string Price { get; private set; }
        public string Quantity { get; private set; }

        public override string ToString()
        {
            return $"Product Name: {this.ProductName} Price: {this.Price} Quantity: {this.Quantity}";
        }

    }