Inicio > tiempo de diseño , Silverlight > Cómo agregar un icono Caja de herramientas para el control de Silverlight

Cómo agregar un icono Caja de herramientas para el control de Silverlight

Historial de cambios:

  • publicado por primera vez en 01/21/2008 para Silverlight versión 2/VS2008/Toolkit diciembre de 2008.
  • actualización 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) tienen buena caja de herramientas de iconos en Visual Studio y Blend. 12 2008 lanzamiento de Silverlight Toolkit ha añadido que para Kit de herramientas de control también, como señalé en mi anterior post características de tiempo de diseño de Silverlight Toolkit :

iconos personalizados

Este post explica cómo se hace en el SDK de Silverlight 2, y en diciembre de 2008 la liberación del kit de herramientas de Silverlight.

Iconos de control en tiempo de ejecución de la Asamblea

El comunicado de diciembre de 2008 de Silverlight Toolkit demostrado la manera de integrar los iconos de caja de herramientas para los controles sin necesidad de utilizar un conjunto de tiempo de diseño.

Abrir Silverlight.Controls.sln en Visual Studio (ver post anterior diseño el tiempo de ejecución de funciones en Silverlight Toolkit para obtener más información sobre cómo descargar el código fuente kit de herramientas):
Insertar iconos en la asamblea en tiempo de ejecución, Visual Studio vista

O Controls.csproj abrir 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 abierto en el reflector:

Insertar iconos en la asamblea en tiempo de ejecución, reflector de vista

Todos muestran tres iconos que la caja de herramientas personalizadas son recursos incrustados en el tiempo de ejecución Microsoft.Windows.Controls.dll montaje, con una convención de nomenclatura particular. Tome por encima de Microsoft.Windows.Controls.Microsoft.Windows.AutoCompleteBox.Icon.png como ejemplo:

  • El Microsoft.Windows.Controls primero es el espacio de nombres raíz, se especifica en el archivo de controls.csproj con la línea: System.Windows.Controls <RootNamespace> </ RootNamespace>
  • El siguiente es Microsoft.Windows.Controls.AutoCompleteBox el nombre completo de la clase AutoCompleteBox, incluyendo espacio de nombres pero no de la Asamblea.
  • El resto del nombre, Icon.png, especificar el tipo de recurso de icono, como se explicará más adelante.

Iconos de control en la Asamblea en tiempo de diseño

El SDK de Silverlight 2 demuestra el enfoque de incorporación de iconos de control en el montaje en tiempo de diseño.

System.Windows.Controls.Design.dll abierto en el reflector (que se instala en% ProgramFiles% \ Microsoft SDKs \ Silverlight \ v2.0 \ Libraries \ Client):

incrustar icono en el montaje en tiempo de diseño, reflector vista

Tome por encima de Controls.Design.Icons.Calendar.bmp como ejemplo:

  • Controls.Design es el espacio de nombres raíz, se especifica en su csproj con la línea de Controls.Design <RootNamespace> </ RootNamespace>
  • Los iconos de la subcarpeta es donde el archivo se encuentra en Calendar.bmp árbol de código fuente
  • Calendar.bmp es el nombre del archivo de recursos en el icono del árbol de código fuente

Icono de control de recursos de la Convención de nomenclatura

Así que a partir de dos ejemplos anteriores, podemos ver que la caja de herramientas de iconos personalizados para los controles están integrados los recursos en una u otra asamblea en tiempo de ejecución (lo que no es necesario enviar un conjunto de tiempo de diseño), o el tiempo de montaje de diseño (y así tener la flexibilidad para cambiar los iconos , al igual que localizar a una cultura diferente, sin tocar el conjunto de tiempo de ejecución). Las herramientas (Visual Studio 2008 SP1, por ahora) tratar de encontrar los iconos basados ​​en una convención de nomenclatura especial:

  1. Búsqueda de recursos cuyo nombre de archivo sin extensión coincide con el nombre de tipo del control, incluyendo el espacio de nombres, con un "{XAML | BMP | PNG | GIF | JPG | JPEG} [icono *]..".
    1. Tenga en cuenta que los subdirectorios afectar el espacio de nombres en que los recursos se encuentran integrados. Por ejemplo, los iconos de herramientas se someten a una subcarpeta Microsoft.Windows.Controls, para evitar poner esta cadena larga de todos los nombres de archivo de icono, mientras que el SDK de poner todos los iconos en una subcarpeta Icons.
    2. Extensiones compatibles y tipos de archivos son: XAML, BMP, GIF, JPG, JPEG y PNG
    3. El tamaño recomendado para la imagen de mapa de bits basados ​​en formatos de archivo es de 64 × 64.
    4. El [. Icono *] en la convención de nombres es opcional y permite especificar diversos tamaños de la imagen que se utiliza como icono. El partido sigue el siguiente algoritmo:
      1. Vectores XAML
      2. Si hay una coincidencia exacta en el tamaño (dos dimensiones) que el uso
      3. Use la coincidencia más cercana en función del tamaño y relación de aspecto
    5. Si un archivo de recursos dado que no es válido XAML o un archivo de imagen válido, el próximo partido será utilizado hasta que se encuentre.
  2. Si una imagen no se encuentra en el mismo espacio de nombres como el de control, un partido flojo basado en el nombre del tipo solo se buscará en contra de todos los recursos, como en el caso de SDK.
  3. Diferentes hosts utilizan diferentes tamaños de imagen de su icono de barra de herramientas.
    1. Mezcla de usos 24 × 24 por su gran tamaño y 12 × 12 para su pequeño tamaño (no creo que esto está funcionando en Blend 2 SP1).
    2. La sidra (Visual Studio) utiliza 16 × 16 bmp.

La entrada en el blog se especifica un icono Caja de herramientas para un control en WPF Designer describe la convención de nombres en más detalles.


Actualización para Blend3 y VS2010

Dado que este post ha sido publicado por primera vez en 01/21/2008, hemos hecho dos mejoras clave con respecto a los iconos de control:

  • Blend 3 se muestran los iconos de los controles también: iconos grandes (24 x 24) en la biblioteca, y pequeños iconos (12 × 12) en Objetos y escala de tiempo. Ver Tiempo Silverlight Diseño: Kit de herramientas de julio 2009 de actualización de para más información.
  • Usted puede registrar su control (y sus iconos asociados) con Blend 3 y Visual Studio 2010. Ver Registrar controles Silverlight con Visual Studio y Blend para más información.
  • La convención de nomenclatura para el icono de los recursos es revisada junto con la convención de nomenclatura para las asambleas tiempo de diseño. Ver Silverlight Asambleas tiempo de diseño para obtener más información sobre la convención de nombres mejorada para las asambleas tiempo de diseño. Tenga en cuenta que la búsqueda de recursos de icono en el orden inverso de la orden de carga de metadatos en tiempo de diseño, es decir, mezcla buscará recurso de icono integrado para un control con el Convenio sobre recurso de icono de nombres en Expression.Design *. *. dll primero; sólo si no se mezcla la búsqueda compartida de diseño *. *. dll segundo, y sólo si, si no volverá a buscarla en el diccionario de la dll en tiempo de ejecución correspondiente al recurso de icono incrustado, y si todos han fracasado, Blend mostrará el icono por defecto del de control. Visual Studio 2010 lo hace en forma similar, pero las búsquedas *. VisualStudio.Design *. dll en primer lugar.
  • Mezcla y Visual Studio ahora son compatibles con un formato más icono, y la escala del icono si el recurso deseado tamaño (24 × 24 × 12 y 12 de mezcla, y 16 × 16 para VS) no se encuentra.

Silverlight Toolkit uso siguientes convenciones de nomenclatura para incorporar recursos de icono:

  • uso de nombres (espacio de nombres + tipo, ej. System.Windows.Controls.Calendar) en lugar de nombres de tipo sólo (por ejemplo, calendario) para evitar la ambigüedad.
  • poner los iconos de mezcla en común. design.dll, y los iconos de caja de herramientas de Visual Studio en. VisualStudio.Design *. dlls. 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 lo mostrará en caja de herramientas.
  • poner recurso de icono en la dll en tiempo de ejecución sólo como último recurso (ex, para evitar el envío de un conjunto de tiempo de diseño con el recurso de icono único).

Usted puede ver el icono de control de los recursos de convención de nomenclatura en el código fuente de Silverlight Toolkit :

Embed Blend Icons in Shared .Design.dll

Embed Visual Studio Icons in .VisualStudio.Design*.dll

Share and Enjoy:

  • Print
  • email
  • RSS
  • Twitter
  • TwitThis
  • del.icio.us
  • LinkedIn
  • Technorati
  • Facebook
  • Google Bookmarks
  • Live
  • MySpace
  • QQ书签
  1. 10 de octubre 2009 a las 02:41 | # 1

    Compruebe http://www.ArtistsValley.com para algunos extensa XAML e iconos de Silverlight a un excelente precio!

  1. 25 de enero 2009 a las 00:58 | # 1