我在尝试使用新Collection View时面临一些棘手的错误在Xamarin表格4中实现的功能4.在Android
项目上它起作用非常在启用MainActivity的实验特征之后。
global::Xamarin.Forms.Forms.SetFlags(new[] { "CollectionView_Experimental", "Shell_Experimental" });
但是xamarin
文档没有提供有关UWP项目的任何信息因此,首先,当我尝试编译UWP项目时,它给我带来了这个异常当它试图渲染一个使用CollectionView
system.invalidoperationException:
'您正在尝试使用的类,属性或方法('verifyCollectionViewFlageNabled') 是CollectionView的一部分;要使用它,您必须通过调用表单来选择加入。 在调用forms.init()之前。'
所以我尝试在呼叫之前在UWP项目中拨打app.xaml.cs的setFlagsInitializeComponent()方法。所以这次给我这个例外它试图加载包含CollectionView
的页面:
system.nullReferenceException:"对象引用未设置为对象的实例。"
在此示例中非常喜欢:
await Navigation.PushAsync(new PageWithCollectionView());
成功执行PageWithCollectionView构造函数。
有人可以帮助我解决这个问题吗?
update
好吧,所以在UWP项目中添加app.xaml.cs中的setFlagsCollectionView可以正确初始化。但是NRE仍然在那里(在Android上,Collection View毫无问题),同时尝试获得消除了这个问题,我注意到当我尝试以这种方式嵌套XAML布局时,这是引起的:
<CollectionView SelectionMode="Single">
<CollectionView.ItemsLayout>
<GridItemsLayout Orientation="Horizontal"
Span="2"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<StackLayout Orientation="Vertical"
Grid.Column="0"
Grid.Row="0">
<Label Text="{Binding Title}"/>
</StackLayout>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
如果我从collectionview.itemtemplate中删除所有数据定位板,则仅像这样空白了:
<CollectionView SelectionMode="Single">
<CollectionView.ItemsLayout>
<GridItemsLayout Orientation="Horizontal"
Span="2"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
该页面被渲染为 CollectionView
显示杂乱布局(无边距和填充,并调用ToString()
元素的方法在单元格内可视化它)。
[update]
更新到 Xamarin Forms
4 pre 8后,例外消失了。
我创建了一个包含CollectionView
的代码示例。根据文档,我们需要在app.xaml.cs文件中的 Xamarin.Forms.Forms.Init(e)
之前调用 SetFlag
。
........
Xamarin.Forms.Forms.SetFlags("CollectionView_Experimental");
Xamarin.Forms.Forms.Init(e);
........
实现CollectionView
<CollectionView>
<CollectionView.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>Baboon</x:String>
<x:String>Capuchin Monkey</x:String>
<x:String>Blue Monkey</x:String>
<x:String>Squirrel Monkey</x:String>
<x:String>Golden Lion Tamarin</x:String>
<x:String>Howler Monkey</x:String>
<x:String>Japanese Macaque</x:String>
</x:Array>
</CollectionView.ItemsSource>
</CollectionView>
它运行良好,对于NullReferenceException
问题,您需要检查后面的代码中是否有空对象。CollectionView的简单实现不会导致此类错误。
update
请尝试更新 Xamarin表单4 到最新的Pre版本。
global::Xamarin.Forms.Forms.SetFlags(“CollectionView_Experimental”);
在Android中使用MainActivity.cs