xamarin System.InvalidOperationException: 'Cannot convert "VerticalGrid, 2" into Xamarin.Forms.IItemsLayout'

xamarin System.InvalidOperationException: 'Cannot convert "VerticalGrid, 2" into Xamarin.Forms.IItemsLayout'

我在包含 CollectionsView 的 ContentPage 的 InitalizeComponent() 期间收到错误 System.InvalidOperationException: 'Cannot convert "VerticalGrid, 2" into 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;
    }
  }
}

如果你希望它是垂直的,你可以省略这个属性,默认设置为VerticalList。如果你想让你的 collectionView 是水平的,只需使用 HorizontalList.

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/collectionview/layout

我在使用 Xamarin.forms version 4.5.0.725 时遇到了同样的错误。

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

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

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

根据 Xamarin.Forms CollectionView Layout,我使用的语法应该有效 - 它确实适用于 UWP。

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

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

而且,此语法适用于 Android。

我在 github 上提交了一个错误:[Bug] CollectionView with ItemsLayout=VerticalGrid crashes on Android #12920