Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Domyślnie z Xamarin.Forms wersji 4.3, gdy element ViewCell w aplikacji systemu Android definiuje akcje kontekstowe dla każdego elementu w elemencie ListView, menu akcji kontekstowych jest aktualizowane po wybraniu ListView elementu w zmianach. Jednak w poprzednich Xamarin.Forms wersjach menu akcji kontekstowych nie został zaktualizowany, a to zachowanie jest określane jako ViewCell starszy tryb. Ten starszy tryb może spowodować nieprawidłowe zachowanie, jeśli ListView obiekt używa DataTemplateSelector klasy do ustawiania jej ItemTemplate z DataTemplate obiektów definiujących różne akcje kontekstowe.
Ta platforma systemu Android umożliwia korzystanie ze starszego ViewCell trybu menu akcji kontekstowych w celu zapewnienia zgodności z poprzednimi wersjami, dzięki czemu menu akcji kontekstowych nie jest aktualizowane po wprowadzeniu zmian przez wybrany element ListView . Jest on używany w języku XAML przez ustawienie właściwości możliwej do powiązania z wartością 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>
Alternatywnie można go używać z poziomu języka C# przy użyciu płynnego interfejsu API:
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
...
viewCell.On<Android>().SetIsContextActionsLegacyModeEnabled(true);
Metoda ViewCell.On<Android> określa, że ta platforma będzie działać tylko w systemie Android. Metoda ViewCell.SetIsContextActionsLegacyModeEnabled w Xamarin.Forms.PlatformConfiguration.AndroidSpecific przestrzeni nazw służy do włączania trybu starszego ViewCell menu akcji kontekstowych, dzięki czemu menu akcji kontekstowych nie jest aktualizowane po zmianie wybranego elementu ListView . Ponadto można użyć metody w celu zwrócenia, ViewCell.GetIsContextActionsLegacyModeEnabled czy jest włączony tryb starszej wersji akcji kontekstu.
Na poniższych zrzutach ekranu przedstawiono ViewCell włączone akcje kontekstowe w starszym trybie:

W tym trybie wyświetlane elementy menu akcji kontekstowej są identyczne dla komórki 1 i komórki 2, pomimo różnych elementów menu kontekstowego zdefiniowanych dla komórki 2.
Na poniższych zrzutach ekranu przedstawiono ViewCell wyłączone akcje kontekstowe w trybie starszym, co jest zachowaniem domyślnym Xamarin.Forms :

W tym trybie są wyświetlane poprawne elementy menu akcji kontekstowej dla komórki 1 i komórki 2.