Application.RequestedTheme Propiedad

Definición

Obtiene o establece un valor que determina la preferencia claro-oscuro para el tema general de una aplicación.

public:
 property ApplicationTheme RequestedTheme { ApplicationTheme get(); void set(ApplicationTheme value); };
ApplicationTheme RequestedTheme();

void RequestedTheme(ApplicationTheme value);
public ApplicationTheme RequestedTheme { get; set; }
var applicationTheme = application.requestedTheme;
application.requestedTheme = applicationTheme;
Public Property RequestedTheme As ApplicationTheme
<application RequestedTheme="applicationThemeMemberName" .../>

Valor de propiedad

Valor de la enumeración. El valor inicial es el tema predeterminado establecido por el usuario en la configuración de Windows.

Ejemplos

En este ejemplo se muestra cómo guardar el tema solicitado en la configuración de la aplicación local y, a continuación, recuperarlo y aplicarlo cuando se reinicie la aplicación.

<ToggleSwitch Header="Theme" OnContent="Light" OffContent="Dark"
              Toggled="ToggleSwitch_Toggled" Loaded="ToggleSwitch_Loaded"/>
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
    // Save theme choice to LocalSettings. 
    // ApplicationTheme enum values: 0 = Light, 1 = Dark
    ApplicationData.Current.LocalSettings.Values["themeSetting"] =
                                                     ((ToggleSwitch)sender).IsOn ? 0 : 1;
}

private void ToggleSwitch_Loaded(object sender, RoutedEventArgs e)
{
    ((ToggleSwitch)sender).IsOn = App.Current.RequestedTheme == ApplicationTheme.Light;
}

App.xaml.cs

public App()
{
    this.InitializeComponent();

    // Get theme choice from LocalSettings.
    object value = ApplicationData.Current.LocalSettings.Values["themeSetting"];

    if (value != null)
    {
        // Apply theme choice.
        App.Current.RequestedTheme = (ApplicationTheme)(int)value;
    }
}

Comentarios

Hay dos temas integrados: "Claro" y "Oscuro". De forma predeterminada, la aplicación se ejecuta con el tema establecido por el usuario en la configuración de Windows (Configuración Colores > de personalización >> Elija el modo de aplicación predeterminado). Puedes establecer la propiedad RequestedTheme de la aplicación para invalidar el valor predeterminado del usuario y especificar qué tema se usa.

El tema solo se puede establecer cuando se inicia la aplicación, no mientras se ejecuta. Al intentar establecer RequestedTheme mientras se ejecuta la aplicación, se produce una excepción (NotSupportedException para código de Microsoft .NET). Si proporcionas al usuario una opción para elegir un tema que forme parte de la interfaz de usuario de la aplicación, debes guardar la configuración en los datos de la aplicación y aplicarla cuando se reinicie la aplicación. (Para obtener más información sobre la configuración de la aplicación, consulta Almacenar y recuperar la configuración y otros datos de la aplicación).

Puede cambiar valores de tema específicos en tiempo de ejecución después de aplicar Application.RequestedTheme, si usa la propiedad FrameworkElement.RequestedTheme y establece valores en elementos específicos de la interfaz de usuario.

También hay un tema "HighContrast" que usa valores del sistema, pero las aplicaciones y el código de la aplicación usan una técnica diferente para cambiar la aplicación a contraste alto. La propiedad RequestedTheme se omite si el usuario se ejecuta en modo de contraste alto. Consulta Temas de contraste alto y ejemplo de estilo de contraste alto XAML.

Aunque la aplicación no puede cambiar los temas en tiempo de ejecución, el usuario puede (empezando por Windows 8.1). Por ejemplo, un usuario podría habilitar un tema de contraste alto mientras se ejecuta la aplicación, mediante el método abreviado de teclas Alt+Mayús+PrtScn. Si esto sucede, el sistema de recursos XAML volverá a calcular los valores de recursos de cualquier uso de extensión de marcado {ThemeResource} . Los recursos adecuados para el tema, como los colores y los pinceles, usan los valores adecuados para el tema actual, aunque no fuera la aplicación que solicitó ese tema originalmente.

Los recursos específicos del tema normalmente se definen en un diccionario de recursos independiente en XAML. Este diccionario de recursos procede de la propiedad ThemeDictionaries del resourceDictionary principal que se usa para las plantillas de control. El diccionario de recursos del sistema predeterminado para recursos específicos del tema se denomina ThemeResources.xaml. Este archivo está disponible en la carpeta (Archivos de programa)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic desde una instalación del Kit de desarrollo de software (SDK) de Windows.

Notas de las versiones anteriores

Windows 8.x De forma predeterminada, la aplicación se ejecuta con el tema "Oscuro" (en el archivo themeresources.xaml, el nombre de clave de los recursos "Oscuro" es "Predeterminado").

  • En Windows, establecer RequestedTheme en ElementTheme.Default siempre dará como resultado que "Dark" sea el tema.
  • En Windows Phone, el uso del valor ElementTheme.Default dará como resultado una consulta para el tema del sistema, tal y como lo establece el usuario.

Se aplica a

Consulte también