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 UI TEST,错误 System.Exception