我想在我的MVVM Light WP7项目中使用列表框的交替背景颜色。
WP7不支持交替使用ListBox项目背景的背景颜色。
我有一个列表框,其itemsource设置为CollectionViewSource。 CollectionViewSource又绑定到我的ViewModel中的ObservableCollection。 CollectionViewSource配置为按我的自定义对象中的datetime属性对列表进行排序。
当列表滚动到底部时,会向viewmodel发送一个命令,以向我的集合中添加更多数据。由于CollectionViewSource在日期时间排序,所以项目可以出现在列表中的任何位置,而不仅仅是在最后。
这会使http://chillijam.co.uk/2012/01/11/alternating-listbox-item-background-colours-in-wp7/和How to apply alternate row style in listbox in window phone 7等方法无效。因为他们只检查以前添加的项目。
我还订阅了ListView UpdateLayout事件,并且遍历ListBox中的每个元素并交替显示背景,但这会多次触发并使应用程序真的没有响应。
有没有人有想法?
答案 0 :(得分:1)
您可以尝试按行号访问行,并为其添加颜色,如。
if( row.id % 2 ==0)
//first color
else
//second color
编辑: 我用它来修改列表框行背景时选择
ListBoxItem lbiSelected = (ListBoxItem)(CalcultionList.ItemContainerGenerator.ContainerFromIndex(selectedItemIndex));
//CalculationList is the name of my listbox
lbiSelected.Background = new SolidColorBrush(Colors.Red);