2009-11-15 8 views

risposta

7

articoli controlli avere una conta un'alternanza che si utilizza per lo stile contro

avere uno sguardo here:

<Style TargetType="{x:Type ListBoxItem}"> 
    <Style.Triggers> 
     <Trigger Property="ItemsControl.AlternationIndex" Value="0"> 
      <Setter Property="Background" Value="LightBlue"></Setter> 
     </Trigger> 
     <Trigger Property="ItemsControl.AlternationIndex" Value="1"> 
      <Setter Property="Background" Value="LightGreen"></Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

godere!

+1

È una funzionalità eccezionale, grazie per informazioni. Ma ho bisogno del ** solo ** primo elemento per avere lo sfondo rosso, non ogni articolo dove (itemIndex% AlternationCount) == 0. Naturalmente, posso associare AlternationCount a ItemsSource.Count, ma non c'è un modo migliore di fare Questo? – levanovd

+0

ciò che si profila è accettabile, è tutto in xaml. fa il lavoro e puoi passare a cose migliori. qualcun altro potrebbe venire con una soluzione più elegante. Si potrebbe eseguire una multibinding con il primo binding al componente corrente e il secondo un ancestor binding, che si lega alla fontesource della casella di elenco. quindi nel tuo convertitore puoi controllare quale fosse l'indice dell'articolo. ma la tua soluzione sopra è tutto in xaml. Io preferisco sempre la leggibilità. è in bella vista nel xaml, non bloccato in un convertitore –

+0

Non c'è bisogno di associare AlternationCount a ItemsSource.Count: basta impostarlo su Int32.MaxValue in XAML. (Preferisco AlternationCount = "2147483647" sull'uso di "{x: Static sys: Int32.Maxvalue}", poiché è più veloce e 2^31-1 è riconoscibile per la maggior parte dei programmatori). –