xamarin System.InvalidOperationException:&x27;无法转换";垂直网格,2“;转化为Xamarin.Forms.IItemsLayout';
我在包含CollectionsView的ContentPage的initializeComponent()期间收到错误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
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)我试图理解这一点。我怀疑这是相关的。很抱歉不明白,但你说的“更新”是什么意思。我已经重建了,警告不会消失。是否指定了可以覆盖整个安装的地方版本控制?