2009-05-27 14 views
6

Tengo un kit de herramientas: DataGrid (de Codeplex).¿Cómo puedo aplicar estilos XAML múltiples a un elemento?

Se está empezando a tener muchos estilos diferentes:

  • uno para el encendido y apagado basado en una variable en el modelo de vista
  • uno para el estilo visual
  • uno para algunos otros factores desencadenantes, etc. .

hacer todas estas deben estar en un gran estilo, es que la única manera de hacerlo? ¿O puedo tener múltiples estilos y adjuntarlos cuando los necesite? ¿Hay alguna manera de hacerlo para que pueda, por ejemplo, estilos de intercambio en el código?

Estilos:

<Style x:Key="CodePlexDataGridSwapper" TargetType="toolkit:DataGrid"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding WhichGrid}" Value="Infragistics"> 
      <Setter Property="toolkit:DataGrid.Visibility" Value="Collapsed"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

<Style x:Key="ToolkitDataGridLayout" TargetType="toolkit:DataGrid"> 
    <Setter Property="Background" Value="Yellow"/> 
</Style> 

pseudo-código:

<toolkit:DataGrid 
    Style="{StaticResource CodePlexDataGridSwapper, ToolkitDataGridLayout}" 
    ItemsSource="{Binding Customers}"/> 

Respuesta

11

es posible que desee ver el BasedOn property de la clase de estilo. Básicamente, le permite heredar un estilo de otro. El estilo 'hijo' tendrá todos los setters y triggers del padre (a menos que tenga setters que sobrepasen los de los padres) además tendrá obviamente su propio setter y triggers.

Quizás esta información sea útil para usted.

+1

+1 porque ayuda un poco, pero aún no ayuda a aplicar/fusionar más de dos conjuntos de estilos por separado. Desafortunadamente, es bastante probable que a excepción de la semi-herencia basada en simple no hay forma de aplicar 'muchos' de ellos. – quetzalcoatl

+0

la respuesta puede estar aquí: http: //stackoverflow.com/questions/16096/how-to-apply-multiple-styles-in-wpf –

Cuestiones relacionadas