c# - 尝试将对象添加到 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:
解决方案
该死,这很难理解,我所做的只是与问题中的 EDIT2 不同的两件事。
1º - 我只是在 Detalhes 的 c# 类中切换这一行: BindingContext = Rote; (并将其放在“InitializeComponent();”之后)
2º - 在 Detalhes 的 XAML 页面中,在我有“ ItemsSource="{Binding Name }" 的部分中,它实际上只与点一起使用,如下所示: ItemsSource="{Binding 。}"
@Bijington,@Ian,@David 感谢您在我脑海中尝试解决此问题的帮助,对于大多数经验丰富的程序员来说,这可能与其他世界无关,但我刚刚进入就业市场并开始了解 xamarin 的所有动态.