使用UWP项目中的CollectionView的Xamarin表格4(PRE 4)问题



我在尝试使用新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

最新更新