Comment ajouter une icône Boîte à outils pour votre Silverlight Control
Historique des modifications:
- d'abord publié sur 21.01.2008 pour Silverlight 2/VS2008/Toolkit Décembre 2008 Release.
- mis à jour le 05/12/2009 pour Silverlight 4/VS2010/Blend3/Toolkit Novembre 2009 Release.
Contrôles dans les runtime Silverlight (ex. system.windows.dll) et SDK (ex. system.windows.controls.dll) ont icônes boîte à outils de Nice dans Visual Studio et Blend. Décembre 2008 Sortie de Silverlight Toolkit a ajouté que pour les contrôles Toolkit aussi, comme décrit dans mon précédent post Temps caractéristiques de conception Silverlight Toolkit :
Ce message explique comment cela est fait dans Silverlight 2 SDK, et en Décembre 2008 sortie de la boîte à outils Silverlight.
Icônes de contrôle à l'Assemblée moment de l'exécution
La Décembre 2008 Sortie de Silverlight Toolkit montré comment intégrer les icônes boîte à outils pour les contrôles, sans l'aide d'un assemblage moment du design.
Open Silverlight.Controls.sln dans Visual Studio (voir post précédent temps de conception d'entité de mise en œuvre dans Silverlight Toolkit pour plus d'informations sur la façon de télécharger les sources boîte à outils):
Vous pouvez également ouvrir dans le Bloc-notes Controls.csproj:
<ItemGroup>
<EmbeddedResource Include="Microsoft.Windows.Controls.AutoCompleteBox.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.DockPanel.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Expander.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Label.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.TreeView.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Viewbox.Icon.png" />
</ ItemGroup>
Ou Microsoft.Windows.Controls.dll ouvert dans le réflecteur:
Toutes les trois que la boîte à outils des icônes personnalisées sont intégrées des ressources dans la perspective de l'Assemblée temps Microsoft.Windows.Controls.dll, avec une convention de nommage particulière. Prenez-dessus Microsoft.Windows.Controls.Microsoft.Windows.AutoCompleteBox.Icon.png à titre d'exemple:
- Le premier est le Microsoft.Windows.Controls espace de noms racine, spécifié dans le fichier controls.csproj avec la ligne: System.Windows.Controls <RootNamespace> </ RootNamespace>
- La prochaine Microsoft.Windows.Controls.AutoCompleteBox est le nom complet qualifié de la classe AutoCompleteBox, y compris l'espace de noms, mais pas de montage.
- Le reste du nom, icon.png, préciser le type de ressource icône, comme on le verra plus tard.
Icônes de contrôle du temps de conception de l'Assemblée
Le SDK de Silverlight 2 a démontré l'approche de l'intégration des icônes de contrôle dans l'assemblage de la conception.
Open System.Windows.Controls.Design.dll dans le réflecteur (il est installé sous% ProgramFiles% \ Microsoft SDKs \ Silverlight \ v2.0 bibliothèques \ \ Client):
Prenez-dessus Controls.Design.Icons.Calendar.bmp à titre d'exemple:
- Controls.Design est l'espace de noms racine, a précisé dans son dossier avec la ligne csproj <RootNamespace> Controls.Design </ RootNamespace>
- Icônes est le sous-dossier où le fichier est en Calendar.bmp arbre source
- Calendar.bmp est le nom du fichier de ressources icône dans l'arborescence des sources
L'icône de contrôle des ressources Naming Convention
Ainsi, au-dessus que deux exemples, nous pouvons voir que les icônes boîte à outils personnalisée pour les contrôles sont intégrés dans les ressources ou l'autre assemblée moment de l'exécution (si vous n'avez pas besoin d'expédier un assemblage moment de la conception), ou l'assemblage de la conception (si vous avez la flexibilité de changer les icônes , comme le localiser pour une culture différente, sans toucher à l'Assemblée moment de l'exécution). Les outils (Visual Studio 2008 SP1 pour l'instant) essayer de trouver les icônes basées sur une convention spéciale de nommage:
- Recherche de ressources dont le nom du fichier sans extension correspond au nom de type de contrôle, y compris l'espace de noms, avec une [. Icône *]. (XAML | BMP | PNG | GIF | JPG JPEG |) ".
- Notez que les sous-répertoires affectent l'espace de noms dans lequel se trouvent les ressources embarquées. Par exemple, les icônes Toolkit sont placés sous un sous-dossier Microsoft.Windows.Controls, d'éviter de mettre cette longue chaîne de tous les noms de fichier icône, tandis que le SDK mis toutes les icônes en vertu d'un sous-dossier Icons.
- extensions et les types de fichiers sont: XAML, BMP, GIF, JPG, JPEG et PNG
- taille de l'image Recommandé pour les formats de fichier bitmap base est de 64 × 64.
- Le [. Icône *] dans la convention de nommage est facultative et vous permet de spécifier plusieurs tailles de l'image qui est utilisée comme icône. Le match qui suit l'algorithme suivant:
- Vector XAML
- S'il ya une correspondance exacte sur la taille (deux dimensions) les utilisent
- Utilisez le match le plus proche basée sur la taille et de ratio d'aspect
- Si un fichier ressource donnée n'est pas valide XAML ou un fichier image valide, le prochain match sera utilisé jusqu'à ce que l'on trouve.
- Si une image ne se trouve pas dans le même espace que le contrôle, perdre un match sur le nom du type seul sera effectué une recherche pour l'encontre de toutes les ressources, comme dans le cas SDK.
- différents hôtes utiliser différentes tailles d'image de leur icône boîte à outils.
- Mélange utilise 24 × 24 pour leur grande taille et 12 × 12 pour leur petite taille (je ne pense pas que cela fonctionne dans Blend 2 SP1).
- Cidre (Visual Studio) utilise 16 × 16 fichiers bmp.
Le blog Spécification d'une icône Boîte à outils pour un contrôle dans le concepteur WPF décrit la convention de nommage dans plus de détails.
Mise à jour pour Blend3 et VS2010
Depuis ce poste a été publiée le 21/01/2008, nous avons fait deux améliorations majeures concernant les icônes de contrôle:
- Blend 3 montre les icônes pour les contrôles trop: grandes icônes (24 × 24) de l'actif Bibliothèque, et de petites icônes (12 × 12) dans des objets et Timeline. Voir Silverlight moment du design: Toolkit Juillet 2009 Communiqué de mise à jour pour plus d'informations.
- Vous pouvez enregistrer votre commande (et leurs icônes associées) avec Blend 3 et Visual Studio 2010. Voir registre des contrôles Silverlight avec Visual Studio et Blend pour plus d'informations.
- La convention de nommage des ressources icône est révisé avec la convention de nommage pour les ensembles les délais de conception. Voir Silverlight Design assemblées temps pour plus d'information sur la convention de nommage pour les assemblées amélioré les délais de conception. S'il vous plaît noter que la recherche de ressources icône est dans l'ordre inverse de l'ordre de chargement des métadonnées en temps de conception, c.-à-Blend permettra de rechercher des ressources icône intégrée pour un contrôle avec des ressources icône ci-dessus dans la convention de nommage *. Expression.Design *. dll premier; que si elle ne se mélange de recherche de la commune *. Design *. dll secondes; si et seulement si elle échoue à nouveau sera de recherche de la DLL d'exécution correspondant à la ressource icône intégrée, et si tous ont échoué, Blend affiche l'icône par défaut pour le contrôle. Visual Studio 2010, il fait dans la même manière, mais les recherches *. VisualStudio.Design *. dll premier.
- Blend et Visual Studio prend désormais en charge le format plus graphique, l'échelle et l'icône si la ressource désirée taille (24 × 24 × 12 et 12 pour Blend, et 16 × 16 pour les VS) est introuvable.
Boîte à outils Silverlight utilisation suivantes conventions de nommage pour enrobage ressources d'icônes:
- utiliser le nom complet (namespace + type, ex. System.Windows.Controls.Calendar) au lieu des noms de tout type (ex. calendrier) pour éviter toute ambiguïté.
- icônes pour les mettre en partage Blend. design.dll, et les icônes pour Visual Studio boîte à outils. VisualStudio.Design *. DLL. De cette façon, VS2010 peut afficher l'icône de boîte à outils appropriée s'il en existe un dans. VisualStudio.Design *. dll, sinon, VS2010 peut charger l'icône pour Blend, il l'échelle à 16 × 16, et l'afficher dans boîte à outils.
- mettre des ressources icône dans la DLL d'exécution seulement comme dernier recours (ex, pour éviter l'envoi d'une Assemblée moment du design avec des ressources icône seulement).
Vous pouvez voir la ressource icône de contrôle de convention de nommage dans Silverlight Toolkit code source :








Vérifiez http://www.ArtistsValley.com pour certains vaste XAML Silverlight et les icônes à un prix exceptionnel!