2009-05-27 23 views
6

Possiedo un kit di strumenti: DataGrid (da Codeplex).Come posso applicare più stili XAML a un elemento?

Si sta cominciando ad avere molti stili diversi:

  • uno per accenderlo e fuori sulla base di una variabile nel ViewModel
  • uno per stile visivo
  • uno per alcuni altri trigger, ecc .

fare tutte queste devono essere in un unico grande stile, è che l'unico modo per farlo? Oppure posso avere stili multipli e allegarli quando ne ho bisogno? Esiste comunque la possibilità di farlo in modo che tu possa, ad es. stili di scambio nel codice?

Stili:

<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-codice:

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

risposta

11

si consiglia di guardare il BasedOn property della classe Style. Fondamentalmente, ti permette di ereditare uno stile da un altro. Lo stile "figlio" avrà tutti i setter e i trigger da quello genitore (a meno che non abbia setter che annullano quelli dei genitori) in più avrà ovviamente il proprio setter e trigger.

Forse questa informazione sarà utile per voi.

+1

+1 perché in qualche modo aiuta, ma non aiuta ancora nell'applicare/unire più di due insiemi di stili separati. Purtroppo, è abbastanza probabile che, ad eccezione della semi-ereditarietà basata sulla base, non c'è modo di applicarne "molti". La risposta – quetzalcoatl

+0

può essere qui: http: //stackoverflow.com/questions/16096/how-to-apply-multiple-styles-in-wpf –

Problemi correlati