2012-06-11 19 views
6

Ho il seguente stile aggiunto ai miei Windows.ResourcesCarica da file separato in WPF

<Window.Resources> 
... 
<!--A Style that extends the previous TextBlock Style--> 
<!--This is a "named style" with an x:Key of TitleText--> 
<Style BasedOn="{StaticResource {x:Type TextBlock}}" 
    TargetType="TextBlock" 
    x:Key="TitleText"> 
<Setter Property="FontSize" Value="26"/> 
<Setter Property="Foreground"> 
<Setter.Value> 
    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
    <LinearGradientBrush.GradientStops> 
     <GradientStop Offset="0.0" Color="#90DDDD" /> 
     <GradientStop Offset="1.0" Color="#5BFFFF" /> 
    </LinearGradientBrush.GradientStops> 
    </LinearGradientBrush> 
    </Setter.Value> 
</Setter> 
</Style> 
... 
</Window.Resources> 

Ho un sacco di questi stili nel mio codice XAML e vorrei salvare ogni stile componente un file extra (non un file esterno) .. per esempio tutti gli stili relativi a TextBlocks dovrebbero essere in un file chiamato TextBlockStyles.xaml

Come farei questo in wpf?

Come si collega lo stile nel mio progetto?

Grazie in anticipo

risposta

17

di utilizzare dizionari risorsa unita

In te App.xaml usereste

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary 
       Source="/Your.Assembly.Name;component/TextBlockStyles.xaml"/> 
      ... other dictionaries here 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

o direttamente in un UserControl sarebbero

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary 
       Source="/Your.Assembly.Name;component/TextBlockStyles.xaml"/> 
      ... other dictionaries here 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

È può ridurre Source="..." a solo Source="TextBlockStyles.xaml" se il file si trova nello stesso assieme e nella radice del progetto, o in alternativa Source="Styles\TextBlockStyles.xaml" se si inserisce il dizionario delle risorse nella cartella Styles.

+0

Quindi come si presenta il file "TextBlockStyles.xaml'? –

+0

@TheMuffinMan: un esempio [può essere trovato qui] (https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/resourcedictionary-and-xaml-resource-references#merged-resource -Dizionari). (In questo esempio si chiama 'Dictionary1.xaml'.) – kmote

0

stai cercando le risorse dinamiche. beh il modo migliore è caricare e marcare il dizionario nelle risorse. applicazione o sulla pagina di controllo. ecco un buon esempio per questo.

http://blogs.msdn.com/b/wpfsdk/archive/2007/06/08/defining-and-using-shared-resources-in-a-custom-control-library.aspx

<ResourceDictionary> 

    <ResourceDictionary.MergedDictionaries> 

    <ResourceDictionary Source="Dictionary1.xaml"/> 

    </ResourceDictionary.MergedDictionaries> 

</ResourceDictionary> 

this.Resources.MergedDictionaries.Add (Smyresourcedictionary);