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的整數的列表 –