xamarin System.InvalidOperationException:&x27;无法转换";垂直网格,2“;转化为Xamarin.Forms.IItemsLayout';

xamarin System.InvalidOperationException:&x27;无法转换";垂直网格,2“;转化为Xamarin.Forms.IItemsLayout';,xamarin.forms,collectionview,Xamarin.forms,Collectionview,我在包含CollectionsView的ContentPage的initializeComponent()期间收到错误System.InvalidOperationException:“无法将“VerticalGrid,2”转换为Xamarin.Forms.IItemsLayout” 代码在UWP上正常工作,在Android上运行时出错。作为xamarin.forms的新手,我真的不确定该开始寻找什么 编辑:如果我选择“VerticalList”,它会起作用 下面是我的一点xaml: <C

我在包含CollectionsView的ContentPage的initializeComponent()期间收到错误
System.InvalidOperationException:“无法将“VerticalGrid,2”转换为Xamarin.Forms.IItemsLayout”

代码在UWP上正常工作,在Android上运行时出错。作为xamarin.forms的新手,我真的不确定该开始寻找什么

编辑:如果我选择“VerticalList”,它会起作用

下面是我的一点xaml:

<ContentPage ... >

  <StackLayout>
    <CollectionView
      x:Name="DetailGrid"
      ItemsLayout="VerticalGrid, 2" >

      <CollectionView.ItemTemplate>
        <DataTemplate>
          <StackLayout Padding="20" BackgroundColor="Crimson">
            <Image Source= "{Binding Path}" WidthRequest="300"/>
            <Label Text="{Binding FileName}" TextColor ="Bisque" LineBreakMode="WordWrap" />
          </StackLayout>
        </DataTemplate>
      </CollectionView.ItemTemplate>

    </CollectionView>
  </StackLayout>
</ContentPage>

下面是一些隐藏的代码:

namespace varlist
{
  [XamlCompilation(XamlCompilationOptions.Compile)]
  public partial class CollectionPage : ContentPage
  {
    public ObservableCollection<NodeData> nodes = new ObservableCollection<NodeData>();

    public CollectionPage ()
    {
      InitializeComponent ();

      nodes.Add (new ImageData { FileName = "image_chair_pk.jpg" });
      ...
      DetailGrid.ItemsSource = nodes;
    }
  }
}
名称空间变量列表
{
[XamlCompilation(XamlCompilationOptions.Compile)]
公共部分类集合页面:ContentPage
{
公共ObservableCollection节点=新ObservableCollection();
公共收藏页()
{
初始化组件();
添加(新的ImageData{FileName=“image\u chair\u pk.jpg”});
...
DetailGrid.ItemsSource=节点;
}
}
}

如果希望此属性垂直,可以忽略它,默认设置为
VerticalList
。如果您希望您的
collectionView
是水平的,只需使用
HorizontalList


请参见

当我使用
Xamarin.forms版本4.5.0.725时,我遇到了与您相同的错误

在我将我的Xamarin.forms更新到最新版本
4.8.0.1687
后,一切正常

请更新您的Xamarin.forms版本以解决此问题:


我找到了一个解决办法。这似乎是一个框架错误

根据我使用的语法,它应该可以工作——而且它确实适用于UWP

它们还显示用于指定ItemsLayout的备用声明:

<CollectionView.ItemsLayout>
  <GridItemsLayout Orientation="Vertical" Span="2" />
</CollectionView.ItemsLayout>

而且,这种语法在Android上有效


我在github上提交了一个错误:

您正在标记xamarin.forms和collectionView。通过标记VerticalGrid,您可以更清楚地了解Xamarin.Forms包的版本是什么?Xamarin 16.8.000.255(d16-8@d002176)------Xamarin Designer 16.8.0.507(遥控器/原点/d16-8@e87b24884)------Xamarin模板16.8.112(86385a3)---Xamarin.Android SDK 11.1.0.17(d16-8/c0e2b8e)------Xamarin.Android引用程序集和MSBuild支持。啊,也许他们修复了它!我试试看。谢谢有趣的是:我不久前检查了新版本,VS没有报告任何过时的内容。是的,我只是测试了一下,最新版本可以正常工作。如果答案有效,你能接受吗?这样我们就可以帮助更多有同样问题的人:)。在安卓系统上仍然不适用于我。我有你在截图中显示的相同版本。我确实有一些构建警告,其中一个我特别关注:严重性代码描述项目文件行抑制状态警告NU1605检测到包降级:Xamarin.Forms从4.8.0.1687降到4.8.0.1560。直接从项目中引用包以选择其他版本。varlist.uwp->varlist->Xamarin.Forms(>=4.8.0.1687)varlist.uwp->Xamarin.Forms(>=4.8.0.1560)我试图理解这一点。我怀疑这是相关的。很抱歉不明白,但你说的“更新”是什么意思。我已经重建了,警告不会消失。是否指定了可以覆盖整个安装的地方版本控制?