Xamarin.forms Xamarin表单,运行时在CarouseView中动态添加项目,奇怪的行为

Xamarin.forms Xamarin表单,运行时在CarouseView中动态添加项目,奇怪的行为,xamarin.forms,view,carousel,datatemplate,contentview,Xamarin.forms,View,Carousel,Datatemplate,Contentview,我使用相同的DataTemplate来填充CarouseView中的一些视图:一个包含ContentView的XAML文件。我将自定义类列表分配给CarouseView的ItemsSource,并在模板布局字段中使用绑定来填充自定义类的属性。一切正常。下面是wierd部分:假设模板中有一个按钮,当您在屏幕上单击它时,一个带有“完成良好”文本的标签将添加到所示carouselview的当前堆栈布局中。这是由我的模板XAML的代码隐藏完成的。这也没关系,但我希望在我来回滑动足够多后,“做得好”会消失

我使用相同的DataTemplate来填充CarouseView中的一些视图:一个包含ContentView的XAML文件。我将自定义类列表分配给CarouseView的ItemsSource,并在模板布局字段中使用绑定来填充自定义类的属性。一切正常。下面是wierd部分:假设模板中有一个按钮,当您在屏幕上单击它时,一个带有“完成良好”文本的标签将添加到所示carouselview的当前堆栈布局中。这是由我的模板XAML的代码隐藏完成的。这也没关系,但我希望在我来回滑动足够多后,“做得好”会消失。因为它不是模板的一部分。它并没有消失,相反,我每4次滑动就在其他旋转木马上看到一次,并被替换,我的意思是,如果我来回滑动,它会出现在不同的旋转木马上。为了使它完全消失,我必须从共享相同DataTemplate的视图中滑动。我无法理解这种行为背后的机制。我知道,我可以在模板中创建另一个字段,将“做得好”的文本放在那里,并在时机成熟时显示出来。但我想了解力学。谢谢。

对问题提出正确的问题是任何解决方案的关键。。 在我在更新评论中提到的认识之后,我搜索了DataTemplate缓存,并在Xamarin上找到了这篇文章。Forms Github:


在这里,您可以找到关于CollectionView是如何设计的解释,并了解行为背后的机制。没有虫子。这是出于设计。

更新:我用不同的名称复制了用作DataTemplate的xaml文件,并将它们指定为不同的DataTemplates。现在旋转木马中没有一个视图使用相同的数据模板,这种奇怪的行为当然已经消失了。看起来,当您使用它正在缓存的相同数据模板时。。。