2012-06-11 25 views
6

tengo el siguiente estilo añadido a mis Windows.ResourcesCargar desde archivo separado en 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> 

tengo muchos de esos estilos en mi código XAML y me gustaría guardar cada componente de estilo un archivo extra (no un archivo externo) ... por ejemplo, todos los estilos relacionados con TextBlocks deben estar en un archivo llamado TextBlockStyles.xaml

¿Cómo haré esto en wpf?

¿Cómo vinculo el estilo en mi proyecto?

Gracias de antemano

Respuesta

17

Usted diccionarios de recursos combinados utilizan

En App.xaml que se usaría

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

o directamente en un control de usuario serían

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

Usted puede acortar Source="..." a solo Source="TextBlockStyles.xaml" si el archivo está en el mismo ensamblaje y en la raíz del proyecto, o alternativamente Source="Styles\TextBlockStyles.xaml" si coloca el diccionario de recursos en la carpeta Styles.

+0

¿A qué se parece el archivo llamado 'TextBlockStyles.xaml'? –

+0

@TheMuffinMan: un ejemplo [se puede encontrar aquí] (https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/resourcedictionary-and-xaml-resource-references#merged-resource -diccionarios). (Se llama 'Dictionary1.xaml' en este ejemplo). – kmote

0

usted está buscando recursos dinámicos. bueno, la mejor manera es cargar y margar el diccionario en los recursos. aplicación o bien en la página de control. aquí hay una buena muestra para ello.

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);

Cuestiones relacionadas