¿Para qué es el atributo ThemeInfo?

Cada vez que creo una nueva aplicación WPF o una biblioteca de control de usuarios de WPF, el archivo AssemblyInfo.cs incluye el siguiente atributo:

 [assembly: ThemeInfo( ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located //(used if a resource is not found in the page, // or application resource dictionaries) ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located //(used if a resource is not found in the page, // app, or any theme specific resource dictionaries) )] 

¿Para qué es este atributo ThemeInfo ? ¿Romperé algo si lo quito?

El atributo ThemeInfo especifica dónde debe buscar el mecanismo de temática automático los diccionarios de temas y el diccionario genérico. Cada opción se puede establecer en uno de los siguientes valores:

  • Ninguno (predeterminado): no busque un diccionario de recursos.
  • SourceAssembly: el diccionario es el ensamblaje actual.
  • ExternalAssembly: el diccionario está en un ensamblaje diferente, que debe llamarse ..dll , donde es el nombre del ensamblado actual.

Si los diccionarios de temas especifican estilos para los controles que están definidos en ensamblajes externos, por ejemplo, los controles de WPF, como System.Windows.Controls.ProgressBar y System.Windows.Button , entonces debe usar ThemeDictionaryExtension para especificar la aplicación como fuente. para los diccionarios temáticos.

El marco WPF usa este atributo en las bibliotecas de control como una forma conveniente de aplicar recursos a los controles.

Tenga en cuenta que Windows puede ejecutarse con diferentes temas de IU (Aero es uno de estos ejemplos). Los controles WPF proporcionados por Microsoft modifican su apariencia para diferentes temas de entorno.

Si su aplicación requiere este comportamiento, puede crear diferentes diccionarios de themes en la carpeta de themes de su proyecto de biblioteca de control.

Incluso si no necesita soporte para múltiples temas, es conveniente colocar recursos en el archivo generic.xaml para que sean accesibles a los controles en el ensamblaje. Quizás su elemento (control) esté definido en un archivo .cs sin una clase parcial .xaml , y necesite un lugar para almacenar los recursos que necesita, o (más probablemente) tiene recursos que se compartirán entre muchos elementos WPF de la misma forma proyecto / assembly.

El atributo al que se refiere aquí es metadatos para la asignación de estos recursos.