小编Bit*_*Zar的帖子

在 UWP 项目中使用 CollectionView 的 Xamarin Forms 4(pre 4)问题

我面对一些棘手的错误,而试图使用Xamarin实施新的CollectionView功能窗体4.在Android它使实验性的功能在MainActivity.cs与后效果非常好项目:

global::Xamarin.Forms.Forms.SetFlags(new[] { "CollectionView_Experimental", "Shell_Experimental" });
Run Code Online (Sandbox Code Playgroud)

但是xamarin文档没有提供有关 UWP 项目的任何信息,因此当我首先尝试编译 UWP 项目时,它会在尝试呈现使用 CollectionView 的页面时向我抛出此异常

System.InvalidOperationException:

'您尝试使用的类、属性或方法 ('VerifyCollectionViewFlagEnabled') 是 CollectionView 的一部分;要使用它,您必须在调用 Forms.Init() 之前通过调用 Forms.SetFlags("CollectionView_Experimental") 来选择加入。

所以我尝试在调用 InitializeComponent() 方法之前调用 UWP 项目中 App.xaml.cs 中的 SetFlags。所以这次它在尝试加载包含CollectionView以下内容的页面时向我抛出此异常:

System.NullReferenceException: '未将对象引用设置为对象的实例。'

所以就像在这个例子中:

await Navigation.PushAsync(new PageWithCollectionView());
Run Code Online (Sandbox Code Playgroud)

成功执行 PageWithCollectionView 构造函数后抛出异常。

有人可以帮我解决这个问题吗?

更新

好的,所以在 UWP 项目的 App.xaml.cs 中添加 SetFlags 工作正常,并且 CollectionView 被正确初始化。但是 NRE 仍然存在(在 Android 上,CollectionView 工作没有问题),在试图摆脱这个问题时,我注意到它是在我尝试以这种方式嵌套 XAML 布局时引起的:

global::Xamarin.Forms.Forms.SetFlags(new[] { "CollectionView_Experimental", "Shell_Experimental" });
Run Code Online (Sandbox Code Playgroud)

如果我从 CollectionView.ItemTemplate 中删除所有 DataTemplate,只需将其留空,如下所示:

await Navigation.PushAsync(new PageWithCollectionView());
Run Code Online (Sandbox Code Playgroud)

页面被渲染为CollectionView显示布局凌乱的 ItemSource …

c# xamarin.forms uwp

8
推荐指数
1
解决办法
6269
查看次数

标签 统计

c# ×1

uwp ×1

xamarin.forms ×1