Xamarin Forms,在运行时在 CarouselView 中动态添加项目,奇怪的行为

Posted

技术标签:

【中文标题】Xamarin Forms,在运行时在 CarouselView 中动态添加项目,奇怪的行为【英文标题】:Xamarin Forms, Adding items dynamically inside CarouselView on the run, Strange Behaviour 【发布时间】:2020-12-30 21:51:43 【问题描述】:

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

【问题讨论】:

更新:我用不同的名称复制了用作 DataTemplate 的 xaml 文件,并将它们分配为不同的 DataTemplate。轮播中的所有视图现在都没有使用相同的 DataTemplate,这种奇怪的行为当然已经消失了。看起来当您使用相同的 DataTemplate 时,它​​正在缓存... 【参考方案1】:

就问题提出正确的问题是任何解决方案的关键。 在意识到我在更新评论中提到之后,我搜索了 DataTemplate Caching 并在 Xamarin.Forms Github 上找到了这个问题帖子:https://github.com/xamarin/Xamarin.Forms/issues/9200

在那里,您可以找到有关 CollectionView 是如何设计的解释,并了解行为背后的机制。没有错误。这是设计使然。

【讨论】:

以上是关于Xamarin Forms,在运行时在 CarouselView 中动态添加项目,奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

xml 使用Xamarin.Forms时在Android列表视图中更改所选高亮颜色的示例

在为 uwp 生成 AppPackage 时在 Xamarin.Forms 中。有没有办法将其转换为 .exe 或单击安装之类的东西

我怎么看我的代码如何执行xamarin.forms

无法在 xamarin.forms 上运行 XAMARIN UI TEST,错误 System.Exception

在运行时使用 Xamarin.Forms.Maps 创建折线时如何附加位置?

Xamarin.Forms App MediaRecorder 无法在佳宇 S3 上运行