【问题标题】:How to use CarouselView in Visual Studio 2019 4.4+ and Xamarin.Forms?如何在 Visual Studio 2019 4.4+ 和 Xamarin.Forms 中使用 CarouselView?
【发布时间】:2020-01-16 21:36:57
【问题描述】:

我将我的 Xamarin.Forms 版本从 3.4.0.1 更新到最新版本:4.4.0.991477,但我之前使用的 CarouselView Xamarin.Forms.CarouselView 不再工作,我收到此错误:

The type 'CarouselView' exists in both 'Xamarin.Forms.CarouselView, 
Version=1.0.7.0, Culture=neutral, PublicKeyToken=null' and
'Xamarin.Forms.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null'

我到处寻找 Xamarin.Forms.CarouselView 的解决方案和替代品,但我见过的最好的是 Alex Rainman 的插件,CarouselView.FormsPlugin,https://github.com/alexrainman/CarouselView,但我读过有人抱怨一些错误在那个插件中。

我还听说 Xamarin Forms 现在有自己的新插件了? https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/carouselview/ 但它很新,没有人谈论它,根本没有太多文档......

所以.. 对于当前的 Xamarin.Forms 开发人员 (4.4+),您现在使用什么来实现 CarouselViews? CarouselView.FormsPlugin 可信吗? (我必须为一家大公司更新旧的 CarouselView,所以在推送更新版本之前我需要确保它是好的)。

编辑:卸载插件后: 我现在遇到 Failed to resolve assmebly: 'Xamarin.Forms.CarouselView, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' 错误。

我猜是因为我有这条线

xmlns:cv="clr-namespace:Xamarin.Forms;assembly=Xamarin.Forms.CarouselView" 在我的 xaml 文件中,但如果我把它拿出来,那么我的代码使用 CarouselView

<cv:CarouselView 
  VerticalOptions="FillAndExpand" 
                   HorizontalOptions="FillAndExpand"
                   ItemsSource="{Binding ReadingList}" 
                   Position="{Binding Position}">
    <cv:CarouselView.ItemTemplate>
...

被弄脏了

编辑 2:我认为我需要将 cv:____ 更改为其他内容,因为它显然不再使用相同的插件,所以我尝试从两者中删除 cv: 并且它有效.. 对吗?

【问题讨论】:

  • XF 4.x 有一个内置的 CarouselView。您应该删除您已安装的所有 Carousel 插件或软件包,以防止重复引用。
  • 哦,代码已经正确了,只是对使用哪个 CarouselView 感到困惑?如果我卸载 Xamarin.Forms.CarouselView NuGet 插件,我应该可以吗? @杰森
  • 我不能肯定地说,但这就是你的错误信息。
  • 我试试,谢谢!
  • @Jason 你能检查我的编辑吗?谢谢

标签: xamarin xamarin.forms carousel visual-studio-2019


【解决方案1】:

我认为我需要将 cv:____ 更改为其他内容,因为它 显然不再使用相同的插件,所以我尝试删除 cv:两者都有效。是这样吗?

是的,你做的是对的。

在 Xamarin.forms 4.4.0.991477 中,CarouselView Namespace: Xamarin.FormsAssembly:Xamarin.Forms.Core.dll 中的一个类。

所以您可以将您的cv___ 修改为:

xmlns:cv="clr-namespace:Xamarin.Forms;assembly=Xamarin.Forms.Core"

并像这样使用它:

<cv:CarouselView/>

一般情况下,没有必要使用cv,因为the default namespace 已指定XAML 文件中定义的不带前缀的元素引用Xamarin.Forms 类:

xmlns="http://xamarin.com/schemas/2014/forms"

因此,在您从两者中删除 cv: 并且您的项目正常运行之后。

【讨论】:

  • 哦,好的,谢谢!现在对于您提到的 xmlns:cv="clr-namespace:Xamarin.Forms;assembly=**Xamarin.Forms.Core**" 行,我的代码中实际上并没有那行,有必要吗?之前,我的文件顶部只有 xmlns:cv="clr-namespace:Xamarin.Forms;assembly=**Xamarin.Forms.CarouselView**" 引用,你是说我现在可以摆脱它了吗?或者只是将 Xamarin.Forms.CarouselView 交换为 Xamarin.Forms.Core?
  • @chung 是的,你现在可以摆脱它了。原因是我在答案中写道,默认命名空间已指定在 XAML 文件中定义的没有前缀的元素引用 Xamarin.Forms 类。您现在正在命名空间下使用 CarouselView。如果我的回答对您有帮助,您可以将其标记为正确答案,这将帮助更多有相同问题的人:)。
猜你喜欢
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
相关资源
最近更新 更多