c#-在UWP项目中使用CollectionView的Xamarin Forms 4(pre 4)问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-在UWP项目中使用CollectionView的Xamarin Forms 4(pre 4)问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3058字,纯文字阅读大概需要5分钟。
内容图文
![c#-在UWP项目中使用CollectionView的Xamarin Forms 4(pre 4)问题](/upload/InfoBanner/zyjiaocheng/650/014abda888c14dc0bc9a4cd7f6d96e14.jpg)
您好,我在尝试使用Xamarin Forms 4中实现的新CollectionView功能时遇到了一些棘手的错误.
在Android项目上,使用以下命令启用MainActivity.cs中的实验性功能后,它可以很好地工作:
global::Xamarin.Forms.Forms.SetFlags(new[] { "CollectionView_Experimental", "Shell_Experimental" });
但是xamarin文档没有提供有关UWP项目的任何信息,因此,当我尝试编译UWP项目时,它首先在尝试渲染使用CollectionView的页面时抛出此异常.
System.InvalidOperationException:
'The class, property, or method you are attempting to use ('VerifyCollectionViewFlagEnabled') is part of CollectionView;
to use it, you must opt-in by calling Forms.SetFlags("CollectionView_Experimental") before calling Forms.Init().'
因此,我尝试在调用InitializeComponent()方法之前在UWP项目中的App.xaml.cs中调用SetFlags.因此,这一次在尝试加载包含CollectionView的页面时引发了此异常
System.NullReferenceException: 'Object reference not set to an instance of an object.'
所以像这个例子
await Navigation.PushAsync(new PageWithCollectionView());
成功执行PageWithCollectionView构造函数后,将引发异常.
有人可以帮我解决这个问题吗?
更新
好的,因此在UWP项目中的App.xaml.cs中添加SetFlags实际上可以正常工作,并且CollectionView已正确初始化.但是NRE仍然存在(在Android上,CollectionView可以正常工作),在尝试摆脱此问题的同时,我注意到这是我尝试以这种方式嵌套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中删除所有DataTemplate,则将其保留为空白
<CollectionView SelectionMode="Single">
<CollectionView.ItemsLayout>
<GridItemsLayout Orientation="Horizontal" Span="2"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
页面呈现为CollectionView,显示布局混乱的ItemSource元素(不带边距和填充,并调用element的toString方法在单元格内将其可视化)
[更新]
更新到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问题,您需要检查后面的代码中是否存在null对象. CollectionView的简单实现不会导致此类错误.
更新资料
请尝试将Xamarin Forms 4更新到最新的预版本.
内容总结
以上是互联网集市为您收集整理的c#-在UWP项目中使用CollectionView的Xamarin Forms 4(pre 4)问题全部内容,希望文章能够帮你解决c#-在UWP项目中使用CollectionView的Xamarin Forms 4(pre 4)问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。