Comment ajouter une icône Boîte à outils pour votre contrôle Silverlight
Historique des modifications:
- première publication le 21/01/2008 pour Silverlight 2/VS2008/Toolkit Communiqué de Décembre 2008.
- mise à jour le 05/12/2009 pour Silverlight 4/VS2010/Blend3/Toolkit Novembre 2009 Communiqué.
Les contrôles en Silverlight exécution (ex. System.Windows.dll) et SDK (ex. System.Windows.Controls.dll) ont de belles icônes boîte à outils dans Visual Studio et Blend. Décembre 2008 Communiqué de Silverlight Toolkit a ajouté que pour les contrôles de boîte à outils aussi, comme décrit dans mon précédent post Caractéristiques moment du design dans Silverlight Toolkit :
Ce post explique comment il se fait dans Silverlight 2 SDK, et en Décembre 2008 Communiqué de Silverlight Toolkit.
Icônes de contrôle de l'Assemblée Run Time
Le communiqué de Décembre 2008 de Silverlight Toolkit démontré comment intégrer des icônes boîte à outils pour les contrôles sans utiliser un assemblage de temps de conception.
Ouvrez Silverlight.Controls.sln dans Visual Studio (voir précédente après présentent un design le temps d'implémentation dans Silverlight Toolkit pour plus d'informations sur la façon de télécharger les sources toolkit):
Ou Controls.csproj ouvert dans le Bloc-notes:
<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:
Tous les trois démontrent que les icônes boîte à outils personnalisés sont intégrés des ressources dans le long temps d'assemblage Microsoft.Windows.Controls.dll, avec une convention de nommage particulière. Prenez-dessus Microsoft.Windows.Controls.Microsoft.Windows.AutoCompleteBox.Icon.png comme exemple:
- Le premier est le Microsoft.Windows.Controls espace de noms racine, spécifiée dans le fichier controls.csproj avec la ligne: System.Windows.Controls <RootNamespace> </ RootNamespace>
- Le Microsoft.Windows.Controls.AutoCompleteBox suivant est le nom entièrement qualifié de la classe AutoCompleteBox, y compris les espaces de noms, mais pas de montage.
- Le reste du nom, icon.png, spécifiez le type de ressource icône, comme il sera expliqué plus tard.
Icônes de contrôle de l'Assemblée moment du design
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.
System.Windows.Controls.Design.dll Ouvrir dans le réflecteur (il est installé sous% ProgramFiles% \ Microsoft SDKs \ Silverlight \ v2.0 \ Libraries \ Client):
Prenez-dessus Controls.Design.Icons.Calendar.bmp comme exemple:
- Controls.Design est l'espace de noms racine, spécifiées dans sa csproj avec la ligne <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
Contrôle des ressources Icône Naming Convention
Donc, de plus de deux exemples, nous pouvons voir que les icônes boîte à outils personnalisée pour les contrôles sont intégrés des ressources dans l'autre assemblée moment de l'exécution (vous n'avez donc pas besoin de transporter une assemblée le temps de conception), ou l'assemblage du temps de conception (si vous avez la flexibilité de changer les icônes , comme le localiser pour une culture différente, sans toucher à l'assemblée de l'exécution). Les outils (Visual Studio 2008 SP1 pour l'instant) essayer de trouver des icônes basées sur une convention de nommage particulière:
- Rechercher des ressources dont le nom sans l'extension correspond au nom du type de la commande, y compris l'espace de noms, avec un "{XAML | BMP | PNG | GIF | JPG | JPEG} [icône *]..».
- Notez que les sous-répertoires affectent l'espace de noms dans lequel les ressources incorporées sont trouvés. Par exemple, les icônes Toolkit sont mis sous un sous-dossier Microsoft.Windows.Controls, pour éviter de mettre cette longue chaîne de tous les noms de fichier icône, tandis que le SDK mis toutes les icônes dans un sous-dossier Icons.
- Les extensions et les types de fichiers sont: XAML, BMP, GIF, JPG, JPEG et PNG
- Taille d'image recommandée 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:
- Vecteur XAML
- S'il ya une correspondance exacte de la taille (deux dimensions) de l'utiliser
- Utilisez la correspondance la plus proche basée sur la taille et l'aspect ratio
- Si un fichier de ressource donnée n'est pas valide XAML ou un fichier image valide, le prochain match sera utilisé jusqu'à en trouver une.
- Si une image n'est pas trouvée dans le même espace que le contrôle, perdre un match basé sur le nom du type seul sera recherchée contre l'ensemble des ressources, comme dans le cas du SDK.
- Différents hôtes utiliser des tailles d'image différentes pour 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 bmp.
Le blog Spécifier 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 & VS2010
Depuis ce post a d'abord été publié sur 21.01.2008, nous avons fait deux améliorations clés concernant le contrôle des icônes:
- Blend 3 affiche des icônes pour les contrôles de trop: grandes icônes (24 × 24) dans la bibliothèque d'actifs, et de petites icônes (12 × 12) dans Objets et chronologie. Voir le temps de conception de Silverlight: Toolkit Juillet 2009 Mise à jour version pour plus d'informations.
- Vous pouvez enregistrer vos commandes (et leurs icônes associées) avec Blend 3 et Visual Studio 2010. Voir S'enregistrer contrôles Silverlight avec Visual Studio et Blend pour plus d'informations.
- La convention de nommage des icône de la ressource est révisée avec la convention de nommage pour les assemblages de la conception. Voir assemblées Silverlight moment du design pour plus d'informations sur la convention de nommage améliorés pour les assemblages de la 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 de la conception, à savoir, Blend va rechercher les ressources icône intégrée pour un contrôle avec la convention icône de la ressource-dessus de nommage dans *. Expression.Design *. dll en premier; que si elle ne se mélange de recherche de la commune *. Conception *. dll secondes, et seulement si, si on échoue à nouveau rechercher les DLL runtime 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 l'icône, et l'échelle sur l'icône si la ressource désirée taille (24 × 24 × 12 et 12 pour le mélange, et 16 × 16 pour VS) n'est pas trouvé.
Silverlight Toolkit utilisation suivante conventions de nommage pour l'intégration des ressources icône:
- utiliser le nom complet (namespace + type, ex. System.Windows.Controls.Calendar) au lieu des noms de type juste (ex. Calendar) pour éviter toute ambiguïté.
- mettre des icônes Blend en commun. design.dll, et des icônes pour la boîte à outils de Visual Studio en. dll *. VisualStudio.Design. 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 de mélange, il échelle à 16 × 16, et l'afficher dans la boîte à outils.
- mis ressource d'icône dans la dll runtime uniquement en dernier ressort (ex, pour éviter d'expédition d'une assemblée temps de conception avec l'icône de ressources uniquement).
Vous pouvez voir l'icône du contrôle des ressources dans la convention de nommage du code source de Silverlight Toolkit :








Les commentaires récents