Je suis face à quelques bugs difficiles tout en essayant d'utiliser la nouvelle fonctionnalité de CollectionView mis en œuvre dans Xamarin Forms 4. Sur la Android
projet, il fonctionne très bien après l'activation de fonctionnalités expérimentales MainActivity.cs avec:
global::Xamarin.Forms.Forms.SetFlags(new[] { "CollectionView_Experimental", "Shell_Experimental" });
Mais xamarin
documentation ne fournit aucune information sur le projet UWP donc d'abord quand j'ai essayé de compiler le projet UWP, il me jette cette exception quand il essaie de rendre une page qui utilise CollectionView
System.InvalidOperationException:
" La classe, la propriété ou la méthode que vous essayez d'utiliser ( " VerifyCollectionViewFlagEnabled ') fait partie de CollectionView; pour l'utiliser, vous devez opt-in en appelant Forms.SetFlags ( "CollectionView_Experimental") avant d'appeler Forms.Init ().
J'ai donc essayé d'appeler les SetFlags à App.xaml.cs dans le projet UWP avant d'appeler la méthode InitializeComponent (). Cette fois-ci, il me jette cette exception quand il tente de charger la page contenant CollectionView
:
System.NullReferenceException: " référence d'objet non définie à une instance d'un objet. "
Ainsi, comme dans cet exemple:
await Navigation.PushAsync(new PageWithCollectionView());
L'exception est levée après l'exécution réussie du constructeur PageWithCollectionView.
Aider quelqu'un peut me résoudre ce problème?
MISE À JOUR
Ok, donc ajouter les SetFlags à App.xaml.cs dans les travaux du projet UWP et le CollectionView s'initialisé correctement. Mais le NRE est toujours là (sur Android l'CollectionView fonctionne sans problème), tout en essayant de se débarrasser de ce problème, j'ai remarqué qu'il est causé lorsque je tente de imbriquer le XAML layout de cette façon:
<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>
Si je supprime tous les DataTemplate de CollectionView.ItemTemplate, tout en laissant le champ vide comme ceci:
<CollectionView SelectionMode="Single">
<CollectionView.ItemsLayout>
<GridItemsLayout Orientation="Horizontal"
Span="2"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
La page est rendu un CollectionView
montre ItemSource éléments avec la mise en page en désordre (sans marge et le rembourrage, et d'appeler ToString()
méthode de l'élément pour visualiser l'intérieur de la cellule).
[UPDATE]
Après mise à jour Xamarin Forms
4 pre 8, l'exception est disparu.
global::Xamarin.Forms.Forms.SetFlags(“CollectionView_Experimental”);
utilisation MainActivity.cs
dans Android