Проблема при попытке добавить объект в ObservableCollection - PullRequest
0 голосов
/ 14 сентября 2018

Я немного застрял здесь.

Так что это мой класс, который я инициализирую, мой ObservableCollection:

public class ServicosMenu : BindableObject
{
    private Rota _oldSer;

    public  AppService lo = new AppService();
    public ObservableCollection<Rota> ListSer { get; set; }
    public ObservableCollection<Rota> OneSer { get; set; }//foi introduido pra testar 1 so servico
    public List<Rota> y = new List<Rota>();
    public RssRotas rts = new RssRotas();
    public CalendarPopUp cal = new CalendarPopUp();

    public ServicosMenu()
    {
        rts.data = cal.datacal;
        GetListSerAsync();
        ListSer = new ObservableCollection<Rota>();
        OneSer = new ObservableCollection<Rota>();
    }

    public void settt(string value)
    {
        rts.data = value;
    }.....

А в другом классе это код:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class Servicos : ContentPage
{
    public Servicos (string data)
    {
        InitializeComponent();
    }

    public void ListView_ItemTapped(object sender, ItemTappedEventArgs e)
    {
        var vm = BindingContext as ServicosMenu;
        var ser = e.Item as Rota;

        vm.HideOrShowService(ser);
        vm.OneSer.Add(ser); //this is where it gives me the error 
    }

    private async Task Button_Clicked_DetalhesAsync(object sender, ItemTappedEventArgs e)
    {
        await Navigation.PushAsync(new Detalhes());
    }

Так что моя проблемазаключается в том, что ObservableCollection выполняет «сброс» каждый раз, когда я вызываю представление Details, потому что он имеет BindingContext для класса ServicoMenu.Поэтому каждый раз, когда я вызываю представление, оно вызывает конструктор и снова инициализирует коллекцию, и я теряю значение, которое пытался добавить.

Как это исправить, чтобы оно не «сбрасывало» значение?

Спасибо за любую помощь !!

РЕДАКТИРОВАТЬ1:

enter image description here

Как выМожно видеть, что мой класс просмотра Detalhes уже получил значение выбранного элемента, думаю связать его со списком xaml.Это мой xaml:

enter image description here

И в приложении ничего ... enter image description here

РЕДАКТИРОВАТЬ2:

enter image description here enter image description here

и когда я касаюсь кнопки, чтобы перейти на страницу сведений оприложение, оно не работает, и я получаю эту странную мысль в выводе: enter image description here

1 Ответ

0 голосов
/ 17 сентября 2018

Черт возьми, мне было трудно это понять, потому что я сделал только две вещи, отличные от EDIT2 в вопросе.

1º - я просто переключаю эту строку в c # классе Detalhes: BindingContext = Rote;(и поместите его после «InitializeComponent ();»)

2º - на странице деталей XAML, в той части, где у меня есть «ItemsSource =» {Binding Name } »на самом деле он работает только с точкой, например: ItemsSource = "{Binding . }"

@ Bijington, @Ian, @David, спасибо за помощь, пытаясь проработать это в моей головеДля большинства опытных программистов это может быть ничто из другого мира, но я только сейчас выхожу на рынок труда и начинаю понимать всю динамику xamarin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...