Xamarin.forms ReadOnlyObservableCollection显示重复的值

Xamarin.forms ReadOnlyObservableCollection显示重复的值,xamarin.forms,dynamic-data,Xamarin.forms,Dynamic Data,我的CollectionView每次显示页面时都会显示重复的对象,这意味着我第一次会有一个对象(这是正常的),但是如果我导航并返回到该页面,它会复制同一个对象,所以我会得到两次,然后三次..等等 下面是我的页面的ViewModel的构造函数中的代码: Cache .AutoRefresh(x => x.Code) .ObserveOn(RxApp.MainThreadScheduler) .Bi

我的
CollectionView
每次显示页面时都会显示重复的对象,这意味着我第一次会有一个对象(这是正常的),但是如果我导航并返回到该页面,它会复制同一个对象,所以我会得到两次,然后三次..等等

下面是我的页面的ViewModel的
构造函数中的代码:

            Cache
            .AutoRefresh(x => x.Code)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Bind(out _list)
            .DisposeMany();
\u列表
是一个
只读可观察集合

Cache
是从
Akavache
缓存中的
GetAllObjects
获取的
IObservable

                _blobCache
                .GetAllObjects<AddressModel>()
                .ToObservableChangeSet(t => t.Code)
                .AsObservableCache()
                .Connect();
谢谢你的帮助或提示

更新

只有在选项卡之间导航时才会发生复制行为,如果我按下一个新页面并返回,我会再次找到1个对象,这是预期的行为

下面是设置页面绑定上下文的代码

选项卡页面的代码隐藏中

public partial class MainTabbedPage : ReactiveTabbedPage<MainViewModel>
    {
        public MainTabbedPage()
        {
            InitializeComponent();
            this.WhenActivated(
                disposables =>
                {
                    this
                        .OneWayBind(this.ViewModel, x => x.AddressVm, x => x.addressView.ViewModel)
                        .DisposeWith(disposables);
                    //other tabs...
                });
        }
    }

我有一种感觉,你在用OnAppearing方法将数据分配给你的
可观测集合
,这种方法基本上是一次又一次地被调用,从而添加重复的数据!但是如果不是这样的话,我们需要查看与此相关的所有代码,即xaml.cs和VM代码,否则我们只是在猜测!!!在分配数据的行上设置断点,并查看它得到的次数called@apex39带有
Bind(out\u list)
的代码位于页面的ViewModel的构造函数中,是的,每次显示视图时都会调用它。为什么ViewModel的构造函数会调用多次?我的意思是,构造函数不只是被调用一次吗?是的,同意@apex39这一点。当每次你的视图被激活时都调用Activated时,我感觉你在用OnAppearing方法将数据分配给你的
ObservableCollection
,该方法基本上被反复调用,反过来又添加重复的数据!但是如果不是这样的话,我们需要查看与此相关的所有代码,即xaml.cs和VM代码,否则我们只是在猜测!!!在分配数据的行上设置断点,并查看它得到的次数called@apex39带有
Bind(out\u list)
的代码位于页面的ViewModel的构造函数中,是的,每次显示视图时都会调用它。为什么ViewModel的构造函数会调用多次?我的意思是,构造函数不只是被调用一次吗?是的,同意@apex39这个说法。WhenActivated是在每次视图被激活时被调用的
public partial class MainTabbedPage : ReactiveTabbedPage<MainViewModel>
    {
        public MainTabbedPage()
        {
            InitializeComponent();
            this.WhenActivated(
                disposables =>
                {
                    this
                        .OneWayBind(this.ViewModel, x => x.AddressVm, x => x.addressView.ViewModel)
                        .DisposeWith(disposables);
                    //other tabs...
                });
        }
    }
        public AddressViewModel AddressVm => new AddressViewModel(HostScreen);

        public MainViewModel(IScreen hostScreen) : base(hostScreen)
        {
        }