2012-01-12 14 views
6

Sono parte dello sviluppo di un progetto Silverlight 4 su più vasta scala, in cui avremo una serie di simboli che dovrebbero essere utilizzati in diverse parti della GUI (vedere l'esempio seguente).Come riutilizzare le icone (percorsi xaml) in un progetto di grandi dimensioni?

Queste icone sono create da più percorsi direttamente in Blend e verranno utilizzate, singolarmente o come diversi stati visivi in ​​usercontrols (con la stessa icona utilizzata in più di un contesto). Per facilitare la modifica del design di una singola icona e il suo propagarsi nell'intera applicazione, qual è il modo migliore per archiviarli?

Ho provato a creare stili da loro (clic destro -> modifica stile ..), ma questo mi consente solo di creare uno stile vuoto, senza dati di percorso. neanche inserire manualmente il codice xaml per la griglia contenente i percorsi in un dizionario non ha aiutato, cosa mi manca?

Come si salva il percorso e lo stile (colore, tratto, riempimento, ecc.) In modo semplice, preferibilmente in un dizionario risorse, quindi posso riutilizzarli facilmente in usercontrols e altrove, pur mantenendo un facile aggiornamento?

Esempio delle icone che sto cercando di riutilizzare:

enter image description here

risposta

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> 

e quindi utilizzare lo stile con il tipo ContentControl (o derivati):

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

Tutti gli stili possono essere all'interno di un dizionario di risorse: Questo è un articolo abbastanza informativo: http://blogs.infosupport.com/tips-for-effective-usage-of-resource-dictionaries-in-silverlight-and-wpf/

+0

Questa risposta è migliore, ho solo l'abitudine di usare i pulsanti per cose come tali per dare all'utente un'interazione successiva. ContentControl è tuo amico. –

+0

Ho già avuto problemi con questo approccio: in particolare, Blend non sembra voler caricare correttamente i dati del percorso. Purtroppo non ho una soluzione migliore. –