 <p>You're on the right track. You can bind the AlternationCount to the length of your collection then create a style for the default items, and change it for first the rows:</p> <pre><code>&lt;Style x:Key="differentItemsStyle" TargetType="{x:Type Label}"&gt; &lt;Setter Property="Foreground" Value="Red"&gt;&lt;/Setter&gt; &lt;Style.Triggers&gt; &lt;DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource TemplatedParent}}" Value="0"&gt; &lt;Setter Property="Foreground" Value="Green"&gt;&lt;/Setter&gt; &lt;/DataTrigger&gt; &lt;DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource TemplatedParent}}" Value="1"&gt; &lt;Setter Property="Foreground" Value="Yellow"&gt;&lt;/Setter&gt; &lt;/DataTrigger&gt; &lt;/Style.Triggers&gt; &lt;/Style&gt; </code></pre> <p>In your example you would have a default style for Option C, D, E which you can overwrite as you wish for Option A and Option B.</p> <p><strong>Edit</strong> In order to make this work for ListBox the binding needs to be changed:</p> <pre><code>&lt;DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="1"&gt; &lt;Setter Property="Foreground" Value="Yellow"&gt;&lt;/Setter&gt; &lt;/DataTrigger&gt; </code></pre> <p>See <a href="http://stackoverflow.com/questions/19491318/why-does-listbox-alternationindex-always-return-0">this answer</a> for more info.</p>