2010-11-22 7 views
6

¿Es posible definir un ResourceDictionary en un estilo?¿Puedo agregar Resources o ResourceDictionary a un estilo?

Por ejemplo, supongamos que quiero tener dos estilos diferentes para StackPanels y en uno quiero que todos los botones sean azules y el otro que quiera que sean rojos. es posible?

Algo así como

<Style x:Key="RedButtonsPanel" TargetType="{x:Type StackPanel}"> 
    <Setter Property="Orientation" Value="Horizontal" /> 
    <Setter Property="StackPanel.Resources"> 
     <Setter.Value> 
      <ResourceDictionary> 
       <Style TargetType="{x:Type Button}"> 
        <Setter Property="Background" Value="Red" /> 
       </Style> 
      </ResourceDictionary> 
     </Setter.Value> 
    </Setter> 
</Style> 

El código anterior falla con un error sobre el valor de la propiedad de un organismo no puede ser nulo (aunque obviamente no es nulo).

puedo hacer algo como

<ResourceDictionary x:Key="RedButtons"> 
    <Style TargetType="{x:Type Button}"> 
     <Setter Property="Width" Value="100" /> 
     <Setter Property="Background" Value="Red" /> 
    </Style> 
</ResourceDictionary> 

<StackPanel Resources={StaticResource RedButtons} /> 

Sin embargo, me preguntaba si había una manera de combinar el ResourceDictionary en el estilo.

Respuesta

4

StackPanel.Resources no es un DependencyProperty y, por lo tanto, no creo que pueda establecer esa propiedad dentro del estilo.

+0

Gracias, creo que tienes razón. Tampoco puedo usar DynamicResource con la propiedad Resources. – Rachel

3

Intente agregar el estilo (s) para cada TargetType al DockPanel Style.Resources.

Hice algo similar con un DockPanel Style. Se buscan todos los botones o separadores agregados al DockPanel para obtener un estilo uniforme.

He aquí una muestra:

<Style x:Key="DockPanelToolBarStyle" TargetType="{x:Type DockPanel}"> 
    <Style.Resources> 
    <Style TargetType="Button" BasedOn="{StaticResource ButtonToolBarStyle}" /> 
    <Style TargetType="Separator" BasedOn="{StaticResource SeparatorToolBarStyle}" /> 
    </Style.Resources> 
    <Setter Property="Height" Value="45"/> 
    <Setter Property="Background" Value="{StaticResource ToolBarBrush}"/> 
</Style> 
Cuestiones relacionadas