Поделиться через


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

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

Эта платформа iOS отключает этот устаревший цветовой режим в режиме VisualElement, чтобы цвета, заданные пользователем, оставались даже при отключении представления. Он используется в XAML, задав присоединенное VisualElement.IsLegacyColorModeEnabled свойство следующим 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>

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

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

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

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

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

Устаревший режим цвета отключен

Примечание.

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