2012-01-12 11 views
6

Soy parte del desarrollo de un proyecto de Silverlight 4 a mayor escala, donde tendremos un conjunto de símbolos que se deben usar en diferentes partes de la GUI (vea el ejemplo a continuación).¿Cómo reutilizar iconos (xaml-paths) en un proyecto grande?

Estos iconos se crean a partir de varias rutas directamente en Blend, y se usarán, ya sea individualmente o como estados visuales diferentes en controles de usuario (con el mismo icono utilizado en más de un contexto). Para facilitar el cambio del diseño de un solo icono y hacer que se propague a lo largo de la aplicación, ¿cuál es la mejor manera de almacenarlos?

He intentado crear estilos a partir de ellos (clic derecho -> estilo de edición ...), pero esto solo me permite crear un estilo vacío, sin ningún dato de ruta. poner manualmente el código xaml para la grilla que contiene las rutas en un diccionario tampoco ha ayudado, ¿qué es lo que me falta?

¿Cómo guardo la información de ruta y estilo (color, trazo, relleno, etc.) de una manera fácil, preferiblemente en un diccionario de recursos, para poder reutilizarlos fácilmente en controles de usuario y en otros lugares, mientras mantengo la actualización fácil?

Ejemplo de los iconos que estoy tratando de reutilizar:

enter image description here

Respuesta

7
<Style x:Key="MyIcon" TargetType="ContentControl"> 
     <Setter Property="ContentTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <Path Stretch="Fill" Fill="Red" Data="F1 M 24,13C 27.1521,13 29.9945,14.3258 32,16.4501L 32,11L 35,14L 35,22L 27,22L 24,19L 29.5903,19C 28.217,17.4656 26.2212,16.5 24,16.5C 20.1969,16.5 17.055,19.3306 16.5661,23L 13.0448,23C 13.5501,17.3935 18.262,13 24,13 Z M 24,31.5C 27.8031,31.5 30.945,28.6694 31.4339,25L 34.9552,25C 34.4499,30.6065 29.738,35 24,35C 20.8479,35 18.0055,33.6742 16,31.5499L 16,37L 13,34L 13,26L 21,26L 24,29L 18.4097,29C 19.783,30.5344 21.7787,31.5 24,31.5 Z "/> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Y a continuación, utilizar el estilo con el tipo ContentControl (o derivados):

<ContentControl Style="{StaticResource MyIcon}" Width="20" Height="20" Grid.Row="0"/> 

Todos los estilos pueden ser dentro de algún diccionario de recursos: Este es un artículo bastante informativo: http://blogs.infosupport.com/tips-for-effective-usage-of-resource-dictionaries-in-silverlight-and-wpf/

+0

Esta respuesta es mejor, solo tengo el hábito de usar botones para cosas como esa para dar interacción al usuario más tarde. ContentControl es tu amigo. –

+0

He tenido problemas con este enfoque antes: específicamente Blend no parece querer cargar los datos de ruta correctamente. Lamentablemente, no tengo una mejor solución. –

Cuestiones relacionadas