31 votes

À quoi sert l'attribut ThemeInfo?

Chaque fois que je crée une nouvelle application WPF ou bibliothèque de contrôle utilisateur WPF, le fichier AssemblyInfo.cs inclut l'attribut suivant:

 [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)
)]
 

À quoi sert cet attribut ThemeInfo ? Vais-je casser quelque chose si je le supprime?

18voto

ArsenMkrt Points 24447

ThemeInfo attribut spécifie l'emplacement de l'automatique, de la thématisation mécanisme devriez regarder pour le thème dictionnaires et le dictionnaire générique. Chaque option peut être définie à l'une des valeurs suivantes:

  • Aucun (par défaut): Ne cherchez pas un dictionnaire de ressources.
  • SourceAssembly: Le dictionnaire est l'actuelle assemblée.
  • ExternalAssembly: Le dictionnaire est dans une autre assemblée, qui doit être nommé <AssemblyName>.<ThemeName>.dll<AssemblyName> est le courant de l'assemblée nom.

Si le thème des dictionnaires de spécifier des styles pour les contrôles qui sont définies dans des assemblys externes, par exemple, les contrôles WPF comme System.Windows.Controls.ProgressBar et System.Windows.Button,, alors vous devez utiliser l' ThemeDictionaryExtension afin de préciser l'application en tant que source pour le thème dictionnaires.

5voto

Drew Noakes Points 69288

Le framework WPF utilise cet attribut dans les bibliothèques de contrôle comme un moyen pratique d'appliquer des ressources à des contrôles.

Considérer que Windows peut être exécuté avec différents thèmes d'INTERFACE utilisateur (Aero est un exemple). Les contrôles WPF fourni par Microsoft modifier leur apparence pour les différents thèmes environnementaux.

Si votre application requiert ce comportement, vous pouvez créer des thèmes différents dictionnaires de la de la themes le dossier de votre bibliothèque de projet.

Même si vous n'avez pas besoin de multi-support de thème, il est commode de mettre les ressources dans l' generic.xaml le fichier de sorte qu'ils soient accessibles à des contrôles dans l'assemblée. Peut-être que votre élément de contrôle () est définie dans un .cs fichier sans en .xaml classe partielle, et vous avez besoin d'un endroit pour stocker les ressources dont il a besoin, ou (plus probable), vous avez des ressources qui seront partagés entre de nombreux éléments WPF dans le même projet/de l'assemblée.

L'attribut que vous faites allusion, ici, est de métadonnées pour la cartographie de ces ressources.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X