It seems when applying alternating row background colours today on Windows Phone 7, if you have a large set of items to be displayed in the ListBox, the row colours eventually drift out, double up and skip rendering.
Anyone had problems with this, is this a bug in Windows Phone? My code can’t get much simpler. I followed this article precisely: http://chillijam.co.uk/2012/01/11/alternating-listbox-item-background-colours-in-wp7/
Starting off well:

After about 6 flicks of the scrollbar:

As you can see, pretty shocking, and it only gets worse and more separated. Thoughts?
No bugs in windows phone, bugs in the crappy 3-rd party code you’re trying to use.
Their approach is just completely wrong. No one guarantees the framework will call IValueConverter.Convert sequentially. And as you can see, when scrolling up and down the framework does call IValueConverter.Convert in arbitrary order.
It might work only when the listbox doesn’t reuse its items (you can disable reusing by setting the listbox’ ItemsPanel property. By default, it uses VirtualizingStackPanel which causes your items to be reused. Replace it with regular StackPanel). But: (1) RAM usage (2) it still relies on undocumented behavior, may easily break with an OS upgrade.
There’re many correct ways to implement what you want.
You could e.g. add background color to your item class.
Or, inherit from ListBox, override PrepareContainerForItemOverride method, in your implementation call ItemContainerGenerator.IndexFromContainer method to get the row index, and color ListBoxItem object however you want. Beware of 2 things (1) don’t forget to call base.PrepareContainerForItemOverride (2) Your changes to ListBoxItem’s properties may be overridden by visual state manager in the item container template.