是ListViewCachingStrategy,RecycleElement,buggy?

时间:2017-10-30 11:34:45

标签: listview pagination xamarin.forms viewmodel

我一直在与一些人进行长期合作,在所有功能中,用户可以通过列表搜索另一个。我们正在使用Xamarin的ListView控件,我们通过将ListViewCachingStrategy设置为RecycleElement来优化其性能。到目前为止,一切工作都非常好,我们通过在后端使用ElasticSearch改进了时序响应。

我们只显示用户的信息,并允许连接的用户通过点击所需的单元格来打开其他人的页面。问题是我们最近实现了一个新功能,允许他/她通过一个位于单元格中的按钮打开列表的第二个控件。为此,我们将一个Command设置为UserViewModel,初始化我们需要的一切,并设置绑定到这个新控件的IsVisible属性的bool,但是当这个是触发器(Command)时,我们不会进入与之对应的UserViewModel我们想要的用户。

更准确地说,这个问题只出现在前六个用户(一旦页面出现后显示的第一个用户)之后,如果我们向下滚动,用户的信息正在正确更新,所以在理论上通过点击按钮我们应该将命令触发到想要的用户的ViewModel,对吗?但事实并非如此,因为我们总是会成为前六个UserViewModel中的一个......

如果有人遇到同样的问题,我一直在Google上查看,但结果与我的相似,但我确实知道RecycleElement在Android上面临一些问题。我的问题很自然:是不是仍然如此?如果不是:有人面临类似的问题吗?

另外,我们的ListView的itemSource是一个简单的List而不是ObservableCollection,因为有些人可能会建议使用它。它会导致这样的问题吗?我希望我的解释足够清楚,如果你需要任何细节,请告诉我。我真的想调试这种情况......

提前感谢任何读过我帖子的人,他们会花时间回复。 最好的问候,

MT WSM

1 个答案:

答案 0 :(得分:1)

有人,名为DanieIL(他的所有信用),在官方Xamarin的论坛上回复了我,他的带领帮助我解决了我的问题。 Here is the link *

诀窍就是创建一个自定义视图单元格并重新设置给定控件的BindingContext。由于问题是即使正在更新列表视图项的BindingContext值,也不是控件的情况。因此,通过强制它,它工作得很好!

致以最诚挚的问候,

MT WSM