0
我有一个ListView,我正在绘制矩形一个在另一个之下,我正在通过增量加载模拟无限滚动的矩形。如何从颜色列表中连续选择颜色?
我想为ListView中的每个矩形设置不同的颜色。
我正在使用绑定转换器实现这一点。
我的问题是,一次选择的颜色不会保持不变。如果向下滚动ListView并向上滚动,某些矩形的颜色会改变!
的XAML:
<ListView ItemSource={Binding items}>
<ListView.ItemTemplate>
<DataTemplate>
<Rectangle Fill="{Binding Converter={StaticResource gridColorConverter},
Mode=OneTime}" />
</ListView.ItemTemplate>
</DataTemplate>
</ListView>
C#:
public class GridColorConverter : IValueConverter
{
public static int SelectedColorIndex = 0;
public static SolidColorBrush Pink = new SolidColorBrush(Color.FromArgb(255, 90, 20, 66));
public static SolidColorBrush Purple = new SolidColorBrush(Color.FromArgb(255, 85, 29, 108));
public static SolidColorBrush Green = new SolidColorBrush(Color.FromArgb(255, 39, 121, 85));
public static SolidColorBrush Brown = new SolidColorBrush(Color.FromArgb(255, 109, 26, 21));
public static SolidColorBrush Blue = new SolidColorBrush(Color.FromArgb(255, 30, 89, 105));
public static List<SolidColorBrush> GridColors = new List<SolidColorBrush>() { Pink, Green, Purple, Brown, Blue };
public object Convert(object value, Type targetType, object parameter, string language)
{
if(SelectedColorIndex > (GridColors.Count - 1))
{
SelectedColorIndex = 0;
}
return GridColors[SelectedColorIndex++];
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return null;
}
}
这是...很hacky。为什么不只是将Brush属性添加到作为ListView源的项目中,并将Fill属性绑定到它? – yasen
你在“{绑定项目}”中的项目是什么? – Meneses
items是一个包含从1到10,000的整数的列表 –