Устаревший цветовой режим VisualElement в Android

Download Sample Скачайте пример

Некоторые Xamarin.Forms представления имеют устаревший цветовой режим. В этом режиме, если IsEnabled для свойства представления задано falseзначение, представление переопределит цвета, заданные пользователем, с собственными цветами по умолчанию для отключенного состояния. Для обратной совместимости этот устаревший цветовой режим остается поведением по умолчанию для поддерживаемых представлений.

Эта платформа Android отключает этот устаревший цветовой режим, чтобы цвета, заданные пользователем, оставались даже при отключении представления. Он используется в XAML, задав присоединенное VisualElement.IsLegacyColorModeEnabled свойство следующим falseобразом:

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

Кроме того, его можно использовать из C# с помощью api fluent:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
...

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

Метод VisualElement.On<Android> указывает, что эта платформа будет работать только в Android. Метод VisualElement.SetIsLegacyColorModeEnabled в Xamarin.Forms.PlatformConfiguration.AndroidSpecific пространстве имен используется для управления отключением устаревшего цветового режима. Кроме того, этот метод можно использовать для возврата того, VisualElement.GetIsLegacyColorModeEnabled отключен ли устаревший цветовой режим.

Результатом является то, что устаревший цветовой режим можно отключить, чтобы цвета, заданные пользователем, оставались даже при отключении представления:

Legacy color mode disabled

Примечание.

При настройке VisualStateGroup представления устаревший цветовой режим полностью игнорируется. Дополнительные сведения о визуальных состояниях см. в разделе "Диспетчер визуальных состоянийXamarin.Forms".