Передача объекта из БД на следующую страницу после выбора списка - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть список, заполненный продуктами, хранящимися в БД 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
        {

        }
    }

, а выбор списка обрабатывается следующим образом:

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;
    }

Когда продукт выбирается из списка, приложение должно перейти на страницу сведенийкоторый показывает все детали из выбранного объекта продукта.Моя проблема возникает, когда я выбираю продукт из списка, объект продукта всегда нулевой.Как я могу убедиться, что объект продукта заполнен в правильном формате с правильной информацией?

1 Ответ

0 голосов
/ 11 декабря 2018

изменить это:

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);
}

пример Класс продукта:

    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}";
        }

    }
...