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
我在包含 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