Cómo agregar un icono Caja de herramientas para su control Silverlight
Historial de cambios:
- publicado por primera vez el 01/21/2008 para Silverlight 2/VS2008/Toolkit 12 2008 Release.
- actualizado el 12/05/2009 para Silverlight 4/VS2010/Blend3/Toolkit 11 2009 Release.
Controles en tiempo de ejecución de Silverlight (por ejemplo, system.windows.dll) y SDK (por ejemplo, system.windows.controls.dll) han vistosos iconos de caja de herramientas en Visual Studio y Blend. 12 2008 versión de Silverlight Toolkit Kit de herramientas para añadir que los controles también, como se describe en mi anterior post Tiempo características de diseño en Silverlight Toolkit :
Este artículo explica cómo se hace en Silverlight 2 SDK, y en diciembre de 2008 la liberación de la Guía Práctica de Silverlight.
Control de los iconos en la Asamblea tiempo de ejecución
El 12 2008 de lanzamiento de Silverlight Toolkit demostró que a los iconos de caja de herramientas para integrar los controles sin necesidad de utilizar un conjunto de tiempo de diseño.
Abrir Silverlight.Controls.sln en Visual Studio (ver post anterior tiempo de diseño de funciones de aplicación de Silverlight Toolkit para obtener más información sobre cómo descargar el código fuente caja de herramientas):
O bien, abra Controls.csproj en el bloc de notas:
<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>
O Microsoft.Windows.Controls.dll abierta en el reflector:
Todos muestran tres iconos que la caja de herramientas personalizadas se insertan los recursos en el largo tiempo de montaje Microsoft.Windows.Controls.dll, con una convención de nombres en particular. Tome por encima de Microsoft.Windows.Controls.Microsoft.Windows.AutoCompleteBox.Icon.png como ejemplo:
- El primero es el Microsoft.Windows.Controls espacio de nombres raíz, se especifica en controls.csproj archivo con la línea: <RootNamespace> System.Windows.Controls </ RootNamespace>
- El próximo Microsoft.Windows.Controls.AutoCompleteBox es el nombre completo calificado de la clase AutoCompleteBox, incluyendo espacio de nombres pero no de montaje.
- El resto del nombre, icon.png, especificar el tipo de recurso de icono, como se explicará más adelante.
Iconos de control en tiempo de diseño de la Asamblea
El SDK de Silverlight 2 demuestra el enfoque de integración de los iconos de control en tiempo de diseño de montaje.
Abrir System.Windows.Controls.Design.dll en el reflector (se instala en% ProgramFiles% \ Microsoft SDK \ Silverlight \ v2.0 Bibliotecas \ \ Client):
Tome por encima de Controls.Design.Icons.Calendar.bmp como ejemplo:
- Controls.Design es el espacio de nombres raíz, se especifica en su archivo con la línea csproj <RootNamespace> Controls.Design </ RootNamespace>
- Iconos es la carpeta a la cual el archivo se encuentra en Calendar.bmp árbol de código fuente
- Calendar.bmp es el nombre del archivo de recursos en el icono de árbol de código fuente
Control de Recursos Icono Convención de nomenclatura
Así que desde los dos ejemplos anteriores, podemos ver que los iconos personalizados para los controles de cuadro de herramientas se insertan los recursos ya sea en tiempo de ejecución de montaje (para que no se necesita enviar una asamblea en tiempo de diseño), o el montaje en tiempo de diseño (por lo que tiene flexibilidad para cambiar los iconos , al igual que la localización de una cultura diferente, sin tocar la asamblea el tiempo de ejecución). Las herramientas (Visual Studio 2008 SP1, por ahora) tratar de encontrar los iconos basados en un convenio especial de nomenclatura:
- Búsqueda de recursos cuyo nombre de archivo sin extensión coincide con el nombre del tipo de control, incluido el espacio de nombres, con un [". Icono *]. (XAML | BMP | PNG | GIF | JPG | JPEG)".
- Tenga en cuenta que los subdirectorios afectan el espacio de nombres en los que se encuentran los recursos incrustados. Por ejemplo, los iconos Toolkit se someten a una subcarpeta Microsoft.Windows.Controls, para evitar poner esta cadena larga de todos los nombres de icono del archivo, mientras que el SDK de poner todos los iconos en una subcarpeta iconos.
- extensiones y tipos de archivo soportados son: XAML, BMP, GIF, JPG, JPEG y PNG
- Tamaño de imagen recomendado para los formatos de archivos basados en mapas de bits es de 64 × 64.
- El [. Icono *] en la convención de nombres es opcional y permite especificar los tamaños múltiples de la imagen que se utiliza como icono. El partido sigue el siguiente algoritmo:
- Vectorial de XAML
- Si hay una coincidencia exacta en el tamaño (dos dimensiones) se utiliza esta
- El uso más cercana el partido en función del tamaño y relación de aspecto
- Si un archivo determinado recurso no es válido XAML o un archivo de imagen válida, el próximo partido será utilizado hasta que uno se encuentra.
- Si una imagen no se encuentra en el mismo espacio de nombres como el de control, un partido suelto basado en el nombre de tipo sólo se buscarán en contra de todos los recursos, como en el caso de SDK.
- hosts diferentes utilizan diferentes tamaños de imagen de su icono de barra de herramientas.
- Mezcla de usos de 24 × 24 para su gran tamaño y 12 × 12 para su pequeño tamaño (no creo que esto está funcionando en Blend 2 SP1).
- Sidra (Visual Studio) utiliza 16 × 16 bmp.
La entrada en el blog Especificar un icono Caja de herramientas para un control en el Diseñador de WPF describe la convención de nomenclatura en más detalles.
Actualización para Blend3 y VS2010
Dado que esta entrada se ha publicado por primera vez el 1/21/2008, hemos hecho dos mejoras clave sobre los iconos del mando:
- Mezcla 3 muestra los iconos de los controles también: iconos grandes (24 x 24) en activos de Biblioteca, y los iconos pequeños (12 × 12) en Objetos y escala de tiempo. Véase Silverlight tiempo de diseño: Kit de herramientas de actualización de la versión 07 2009 para más información.
- Usted puede registrar su control (y sus iconos asociados) con Blend 3 y Visual Studio 2010. Ver Registro de Silverlight controles con Visual Studio y mezcla para obtener más información.
- La convención de nomenclatura para el recurso de icono es revisada junto con la convención de nomenclatura para las asambleas en tiempo de diseño. Ver Silverlight tiempo de diseño Asambleas para obtener más información sobre la convención de nomenclatura para las asambleas mayor tiempo de diseño. Tenga en cuenta que la búsqueda de recurso de icono está en orden inverso al de la carga de tiempo de diseño de metadatos, es decir, mezcla buscará recursos icono incrustado de un control con recurso de icono por encima de la convención de nomenclatura en *. Expression.Design *. dll primero; sólo si no se mezcla la búsqueda compartida *. Diseño *. dll segundo, y sólo si, si falla de nuevo, se buscar la dll en tiempo de ejecución correspondiente para el recurso de icono incrustado, y si todas han sido infructuosas, Mezcla mostrará el icono por defecto del de control. Visual Studio 2010 lo hace de manera similar, pero las búsquedas VisualStudio.Design *. *. dll en primer lugar.
- Blend y Visual Studio son compatibles con más de formato de iconos, y tendrá un efecto multiplicador en el icono si el recurso deseado tamaño (24 × 12 × 24 y 12 para Blend, y 16 × 16 para VS) no se encuentra.
Silverlight Toolkit utilizar las siguientes convenciones de nomenclatura para incrustar recursos icono:
- utilizar los nombres completos (namespace + tipo, ej. System.Windows.Controls.Calendar) en lugar de nombres del mismo tipo (por ejemplo, Calendar) para evitar ambigüedades.
- iconos para poner Mezclar en común. design.dll, y los iconos de Visual Studio en caja de herramientas. VisualStudio.Design *. dll. De esta manera, VS2010 puede mostrar el icono de la caja de herramientas de la derecha si es que existe en. VisualStudio.Design *. dll, si no, VS2010 puede cargar el icono de la mezcla, la escala a 16 × 16, y verla en el cuadro de herramientas.
- poner recurso de icono de dll en tiempo de ejecución sólo como último recurso (ex, para evitar el envío de una asamblea en tiempo de diseño con el recurso de icono solamente).
Usted puede ver el icono de control de los recursos convención de nomenclatura en Silverlight Toolkit código fuente :








Comentarios Recientes