Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Par défaut, à partir de Xamarin.Forms la version 4.3, lorsqu’une ViewCell application Android définit des actions contextuelles pour chaque élément d’un ListView, le menu Actions contextuelles est mis à jour lorsque l’élément sélectionné dans les ListView modifications. Toutefois, dans les versions précédentes du Xamarin.Forms menu Actions contextuelles n’a pas été mis à jour, et ce comportement est appelé mode ViewCell hérité. Ce mode hérité peut entraîner un comportement incorrect si une ListView utilisation permet DataTemplateSelector de DataTemplate définir ses ItemTemplate objets qui définissent différentes actions de contexte.
Cette plateforme Android spécifique permet le ViewCell mode hérité du menu Actions contextuelles, pour la compatibilité descendante, afin que le menu actions contextuelles ne soit pas mis à jour lorsque l’élément sélectionné dans une ListView modification. Elle est consommée en XAML en définissant la ViewCell.IsContextActionsLegacyModeEnabled propriété pouvant être liée sur true:
<ContentPage ...
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core">
<StackLayout Margin="20">
<ListView ItemsSource="{Binding Items}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell android:ViewCell.IsContextActionsLegacyModeEnabled="true">
<ViewCell.ContextActions>
<MenuItem Text="{Binding Item1Text}" />
<MenuItem Text="{Binding Item2Text}" />
</ViewCell.ContextActions>
<Label Text="{Binding Text}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>
Elle peut également être consommée à partir de C# à l’aide de l’API Fluent :
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
...
viewCell.On<Android>().SetIsContextActionsLegacyModeEnabled(true);
La ViewCell.On<Android> méthode spécifie que cette plateforme spécifique ne s’exécutera que sur Android. La ViewCell.SetIsContextActionsLegacyModeEnabled méthode, dans l’espace Xamarin.Forms.PlatformConfiguration.AndroidSpecific de noms, est utilisée pour activer le ViewCell mode hérité du menu Actions contextuelles afin que le menu actions contextuelles ne soit pas mis à jour lorsque l’élément sélectionné dans une ListView modification. En outre, la ViewCell.GetIsContextActionsLegacyModeEnabled méthode peut être utilisée pour retourner si le mode hérité des actions de contexte est activé.
Les captures d’écran suivantes montrent ViewCell les actions contextuelles en mode hérité activé :

Dans ce mode, les éléments de menu d’action contextuelle affichés sont identiques pour la cellule 1 et la cellule 2, malgré les différents éléments de menu contextuel définis pour la cellule 2.
Les captures d’écran suivantes montrent ViewCell les actions contextuelles en mode hérité désactivé, qui est le comportement par défaut Xamarin.Forms :

Dans ce mode, les éléments de menu d’action contextuelle appropriés sont affichés pour la cellule 1 et la cellule 2.