2009-06-10 8 views
5

Sto iniziando a sviluppare un'applicazione desktop utilizzando WPF (.net 3.5 sp1, solo con VS, non ancora unito).XAML: Come definire modelli di dati e stili da utilizzare su più progetti

Sono al punto in cui sono presenti componenti generici riutilizzabili in diverse librerie.

Dove posso definire i miei modelli di dati degli stili & in modo che siano riutilizzabili in più progetti, quindi posso avere un aspetto coerente?

Ho guardato ResourceDictionaries, ma sono sicuro che

  1. Sono cose che mi servono
  2. Se sono quello che mi serve, come posso 'import' li in altri progetti e riferimento al loro contenuto in Xaml.

Grazie,

risposta

10

ResourceDictionary è la strada da percorrere, è possibile copiare un file xaml contenente il dizionario risorse tra i progetti o compilarli in una DLL di cui farete riferimento dai vostri progetti.

Per fare riferimento a dizionari nello stesso progetto, aggiungi qualcosa di simile alla tua app.xaml (in questo caso tengo le mie risorse nella cartella ControlStyles).

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="ControlStyles/Colors.xaml"/> 
      <ResourceDictionary Source="ControlStyles/Window.xaml"/> 
      <ResourceDictionary Source="ControlStyles/Button.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

Se li si compila in una DLL che si possono usare questa sintassi (se la dll stili si chiama StyleAssembly, la parola "componente" è in realtà parte della sintassi e non un nome di directory):

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Colors.xaml"/> 
      <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Window.xaml"/> 
      <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Button.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 
+0

Yer solo una stella, grazie :) –

0

Volete dizionari risorsa unita, come descritto here.

3

@Nir è giusto, l'unica cosa che mi piace fare così è di sostituire

<ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Colors.xaml"/> 

con queste abbreviazioni

<ResourceDictionary Source="/StyleAssembly;component/ControlStyles/Colors.xaml"/> 

Mi sembra più pulito e il runtime farà da prefisso al pacchetto: // application: ,,, quando tenta di localizzare la risorsa.

Problemi correlati