Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Por padrão, a partir da versão 4.3, quando a ViewCell em um aplicativo Android define ações de contexto para cada item em um ListView, o menu de Xamarin.Forms ações de contexto é atualizado quando o item selecionado é ListView alterado. No entanto, nas versões anteriores do menu de ações de Xamarin.Forms contexto não foi atualizado e esse comportamento é chamado de ViewCell modo herdado. Esse modo herdado pode resultar em comportamento incorreto se a ListView usar a DataTemplateSelector para definir seus ItemTemplate objetos from que definem diferentes ações de DataTemplate contexto.
Esse específico da plataforma Android habilita o modo herdado do ViewCell menu de ações de contexto, para compatibilidade com versões anteriores, para que o menu de ações de contexto não seja atualizado quando o item selecionado em um ListView for alterado. Ele é consumido em XAML definindo a ViewCell.IsContextActionsLegacyModeEnabled propriedade associável como 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>
Como alternativa, ele pode ser consumido do C# usando a API fluente:
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
...
viewCell.On<Android>().SetIsContextActionsLegacyModeEnabled(true);
O ViewCell.On<Android> método especifica que esse específico da plataforma só será executado no Android. O ViewCell.SetIsContextActionsLegacyModeEnabled método, no Xamarin.Forms.PlatformConfiguration.AndroidSpecific namespace, é usado para habilitar o modo herdado do ViewCell menu de ações de contexto, de modo que o menu de ações de contexto não seja atualizado quando o item selecionado em um ListView for alterado. Além disso, o ViewCell.GetIsContextActionsLegacyModeEnabled método pode ser usado para retornar se o modo herdado de ações de contexto está habilitado.
As capturas de tela a seguir mostram ViewCell o modo herdado de ações de contexto habilitado:

Nesse modo, os itens de menu de ação de contexto exibidos são idênticos para a célula 1 e a célula 2, apesar de itens de menu de contexto diferentes serem definidos para a célula 2.
As capturas de tela a seguir mostram ViewCell o modo herdado de ações de contexto desabilitado, que é o comportamento padrão Xamarin.Forms :

Nesse modo, os itens de menu de ação de contexto corretos são exibidos para a célula 1 e a célula 2.