首页 > 解决方案 > 尝试将对象添加到 ObservableCollection 时出现问题

问题描述

我有点卡在这里。

所以这是我初始化我的类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每次我调用视图详细信息时都会进行“重置”,因为它必须BindingContext属于 ServicoMenu 类。所以每次我调用视图时,它都会调用构造函数并再次初始化集合,我丢失了我试图添加的值。

我该如何解决这个问题,使其不会“重置”该值?

谢谢你的帮助!!

编辑1:

在此处输入图像描述

如您所见,我的视图类 Detalhes 已经获得了所选项目的值,因此认为是与 xaml 列表视图绑定。这是我的 xaml:

在此处输入图像描述

在应用程序中什么都没有...在此处输入图像描述

编辑2:

在此处输入图像描述 在此处输入图像描述

当我触摸按钮进入应用程序的详细信息页面时,它不起作用,我在输出中得到了这个奇怪的想法:在此处输入图像描述

标签: c#xamlxamarin

解决方案


该死,这很难理解,我所做的只是与问题中的 EDIT2 不同的两件事。

1º - 我只是在 Detalhes 的 c# 类中切换这一行: BindingContext = Rote; (并将其放在“InitializeComponent();”之后)

2º - 在 Detalhes 的 XAML 页面中,在我有“ ItemsSource="{Binding Name }" 的部分中,它实际上只与点一起使用,如下所示: ItemsSource="{Binding }"

@Bijington,@Ian,@David 感谢您在我脑海中尝试解决此问题的帮助,对于大多数经验丰富的程序员来说,这可能与其他世界无关,但我刚刚进入就业市场并开始了解 xamarin 的所有动态.


推荐阅读