Partilhar via


Modo de cor legado do VisualElement no iOS

Algumas das Xamarin.Forms exibições apresentam um modo de cor herdado. Nesse modo, quando a IsEnabled propriedade da exibição for definida como false, a exibição substituirá as cores definidas pelo usuário pelas cores nativas padrão para o estado desativado. Para compatibilidade com versões anteriores, esse modo de cor herdado continua sendo o comportamento padrão para exibições com suporte.

Esse específico da plataforma iOS desabilita esse modo de cor herdado em um VisualElement, para que as cores definidas em uma exibição pelo usuário permaneçam mesmo quando a exibição estiver desabilitada. Ele é consumido em XAML definindo a propriedade anexada VisualElement.IsLegacyColorModeEnabled como false:

<ContentPage ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout>
        ...
        <Button Text="Button"
                TextColor="Blue"
                BackgroundColor="Bisque"
                ios:VisualElement.IsLegacyColorModeEnabled="False" />
        ...
    </StackLayout>
</ContentPage>

Como alternativa, ele pode ser consumido do C# usando a API fluente:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...

_legacyColorModeDisabledButton.On<iOS>().SetIsLegacyColorModeEnabled(false);

O método VisualElement.On<iOS> especifica que essa plataforma específica só será executada no iOS. O VisualElement.SetIsLegacyColorModeEnabled método, no Xamarin.Forms.PlatformConfiguration.iOSSpecific namespace, é usado para controlar se o modo de cor herdado está desabilitado. Além disso, o VisualElement.GetIsLegacyColorModeEnabled método pode ser usado para retornar se o modo de cor herdado está desabilitado.

O resultado é que o modo de cor herdado pode ser desativado, de modo que as cores definidas em uma exibição pelo usuário permaneçam mesmo quando a exibição estiver desabilitada:

Modo de cor herdado desativado

Observação

Ao definir um VisualStateGroup em uma exibição, o modo de cor herdado é completamente ignorado. Para obter mais informações sobre estados visuais, consulte O Xamarin.Forms Gerenciador de Estado Visual.