Добавленные элементы в наблюдаемую коллекцию не отображаются - PullRequest
0 голосов
/ 30 мая 2020

, когда пользователь нажимает «Аренда автомобиля», он должен отображать выбранную машину в корзине, но проблема в том, что она не появляется

Примечания: это приложение-оболочка, содержащее две страницы: все машины и корзина

All Cars - это список, содержащий объекты автомобиля, у которого есть ModelName / Image / price / viewbox для цвета и кнопка Called Car, когда она нажата, она должна отправить машину (без выбора ее в списке) в корзину

Страница корзины имеет тот же listView с объектами, но кнопка, которая называется удалить машину, удалит машину из корзины

removeCommand работает, но проблема в RentCommand

public class CarViewModel 
{
    public List<Car> cars { get; set; }
    public ObservableCollection<Car> Cars;
    public Command<Car> RemoveCommand
    {
        get
        {
            return new Command<Car>((Car) => {
                App.rent.Delete<Car>(Car.id);
                Cars.Remove(Car);
            });
        }
    }   
    public Command<Car> RentCommand
    {
        get
        {
            return new Command<Car>((Car) => {
                App.rent.Insert(Car);
                Cars.Add(Car);
            });
        }
    }
    public CarViewModel()
    {
        cars = CarDB();
        Cars = new ObservableCollection<Car>();
        List<Car> temp = App.rent.Query<Car>("select * from Car");
        for (int i = 0; i < temp.Count; i++)
            Cars.Add(temp[i]);
    }

    public List<Car> CarDB()
    {
        cars = App.db.Query<Car>("select * from Car");
        if (cars.Count == 0)
        {
            App.db.Insert(new Car { carModel = "Toyota Camry", year = 2020, price = 24425, image = "camry.png", carColor = "#7F7F7F" });
            App.db.Insert(new Car { carModel = "Jeep Grand Cherokee", year = 2018, price = 24990, image = "jeep.png", carColor = "#7F7F7F" });
            App.db.Insert(new Car { carModel = "Honda Accord", year = 2020, price = 20832, image = "honda.png", carColor = "#0080FF" });
            App.db.Insert(new Car { carModel = "Ford Mustang", year = 2020, price = 35630, image = "ford.png", carColor = "#FF8000" });
            App.db.Insert(new Car { carModel = "Subaru Outback", year = 2017, price = 24425, image = "subaru.png", carColor = "#FFFFFF" });
        }
        return (List<Car>)App.db.Query<Car>("select * from Car");
    }
}    

Нажатая кнопка обработчика событий в AllCarPage.xaml.cs в папке представления

private void Button_Clicked(object sender, EventArgs e)
    {
        var button = sender as Button;
        var car = button.BindingContext as Car;
        var vm = BindingContext as CarViewModel;
        vm.RentCommand.Execute(car);
    }

Нажатая кнопка обработчика событий в папке Basket.xaml.cs в представлении

private void Button_Clicked(object sender, EventArgs e)
{
    var button = sender as Button;
    var car = button.BindingContext as Car;
    var vm = BindingContext as CarViewModel;
    vm.RemoveCommand.Execute(car);

}
...