Как то всегда пользовался для отображения данных, в которых имеет смысл раскрашивать цвет фона через строчку DataGrid, а в нем все просто. Есть два замечательных свойства RowBackground и AlternatingRowBackground. Задаешь их и все работает. Если нужно на основе данных отображаемых в строках, то это тоже все просто, через Converter. А вот что делать, если через строчку надо раскрасить фон в ListBox?


Как оказалось, все достаточно просто.
У ListBox есть замечательное свойство AlternationCount которое позволяет задать периодичность изменения раскраски. Если нам нужно строка белая, потом серая, потом опять белая, то записываем в него 2. Если нам нужно чередовать больше цветов, то указываем их количество. Ну а дальше, задаем стиль, который через присоединенное свойство ItemsControl.AlternationIndex определяет каким по счету в рамках одного периода смены цвета является текущий ListBoxItem. Например, AlternationCount = 3. В этом случае у  у первого ListBoxItem свойство AlternationIndex = 0, у второго 1, у третьего 2, у четвертого опять 0 и т.д.
Ну и небольшая демка:

<ListBox AlternationCount=»2″>
    <ListBox.Resources>
        <Style TargetType=»{x:TypeListBoxItem}»>
            <Setter Property=»Background»Value=»Blue»/>
            <Setter Property=»Foreground»Value=»White»/>
            <Style.Triggers>
                <Trigger Property=»ListBox.AlternationIndex»Value=»1″>
                    <Setter Property=»Background»Value=»White»/>
                    <Setter Property=»Foreground»Value=»Black»/>
                </Trigger>
                <Trigger Property=»ListBox.AlternationIndex»Value=»0″>
                    <Setter Property=»Background»Value=»DarkBlue»/>
                    <Setter Property=»Foreground»Value=»White»/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListBox.Resources>
    <ListBoxItem>1</ListBoxItem>
    <ListBoxItem>2</ListBoxItem>
    <ListBoxItem>3</ListBoxItem>
    <ListBoxItem>4</ListBoxItem>
    <ListBoxItem>5</ListBoxItem>
    <ListBoxItem>6</ListBoxItem>

</ListBox>

Вот так это выглядит:

На мой взгляд, все достаточно просто.