Устаревший цветовой режим 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:

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 разделе "Диспетчер визуальных состояний".