Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ve výchozím nastavení od Xamarin.Forms verze 4.3, když ViewCell aplikace pro Android definuje kontextové akce pro každou položku v objektu ListView, místní nabídka akcí se aktualizuje, když se vybraná položka ve změnách ListView změní. V předchozích verzích Xamarin.Forms místní nabídky akcí se však neaktualizovalo a toto chování se označuje jako ViewCell starší režim. Tento starší režim může vést k nesprávnému chování, pokud ListView použije DataTemplateSelector k nastavení objekty DataTemplate ItemTemplate, které definují různé kontextové akce.
Tato platforma pro Android umožňuje ViewCell režim starší verze nabídky kontextových akcí kvůli zpětné kompatibilitě, aby se místní nabídka akcí při změně vybrané položky ListView neaktualizovala. Využívá se v XAML nastavením vlastnosti bindable na ViewCell.IsContextActionsLegacyModeEnabled 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>
Alternativně ho můžete využívat z jazyka C# pomocí rozhraní FLUENT API:
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
...
viewCell.On<Android>().SetIsContextActionsLegacyModeEnabled(true);
Metoda ViewCell.On<Android> určuje, že tato konkrétní platforma se bude spouštět pouze v Androidu. Metoda ViewCell.SetIsContextActionsLegacyModeEnabled v Xamarin.Forms.PlatformConfiguration.AndroidSpecific oboru názvů se používá k povolení ViewCell režimu nabídky kontextových akcí starší verze, aby se místní nabídka akcí neaktualizovala, když se vybraná položka ve změnách ListView změní. Kromě toho lze metodu ViewCell.GetIsContextActionsLegacyModeEnabled použít k vrácení, zda je povolen režim starší verze kontextových akcí.
Následující snímky obrazovky ukazují ViewCell , že je povolený režim starší verze kontextových akcí:

V tomto režimu jsou zobrazené položky místní nabídky akcí stejné pro buňku 1 a buňku 2, i když jsou pro buňku 2 definovány různé položky místní nabídky.
Následující snímky obrazovky ukazují ViewCell , že režim starší verze kontextových akcí je zakázaný, což je výchozí Xamarin.Forms chování:

V tomto režimu se zobrazí správné položky místní nabídky akcí pro buňku 1 a buňku 2.