Actions contextuelles de ViewCell sur Android
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.