Compartir a través de


Modo de color heredado de VisualElement en Windows

Algunas de las vistas Xamarin.Forms presentan un modo de color heredado. En este modo, cuando la propiedad IsEnabled de la vista se establece en false, la vista invalidará los colores establecidos por el usuario con los colores nativos predeterminados para el estado deshabilitado. Para la compatibilidad con versiones anteriores, este modo de color heredado sigue siendo el comportamiento predeterminado para las vistas admitidas.

Esta característica específica de la Plataforma universal de Windows deshabilita este modo de color heredado, de modo que los colores establecidos en una vista por el usuario permanezcan incluso cuando la vista esté deshabilitada. Se consume en XAML estableciendo la propiedad adjunta VisualElement.IsLegacyColorModeEnabled en false:

<ContentPage ...
             xmlns:windows="clr-namespace:Xamarin.Forms.PlatformConfiguration.WindowsSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout>
        ...
        <Editor Text="Enter text here"
                TextColor="Blue"
                BackgroundColor="Bisque"
                windows:VisualElement.IsLegacyColorModeEnabled="False" />
        ...
    </StackLayout>
</ContentPage>

Como alternativa, se puede consumir desde C# mediante la API fluida:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.WindowsSpecific;
...

_legacyColorModeDisabledEditor.On<Windows>().SetIsLegacyColorModeEnabled(false);

El método VisualElement.On<Windows> indica que esta plataforma específica solo se ejecutará en Windows. El método VisualElement.SetIsLegacyColorModeEnabled, en el espacio de nombres Xamarin.Forms.PlatformConfiguration.WindowsSpecific, se usa para controlar si el modo de color heredado está deshabilitado. Además, el método VisualElement.GetIsLegacyColorModeEnabled se puede usar para devolver información sobre si el modo de color heredado está deshabilitado.

El resultado es que el modo de color heredado se puede deshabilitar, de modo que los colores establecidos en una vista por el usuario permanezcan incluso cuando la vista esté deshabilitada:

Modo de color heredado deshabilitado

Nota:

Al establecer un elemento VisualStateGroup en una vista, se omite completamente el modo de color heredado. Para más información sobre los estados visuales, consulte el Xamarin.FormsAdministrador de estado visual.