我有ObservableCollection,其中包含5个obejcts。我可以在xaml中为整个集合设置颜色,背景等,如下所示:
<GridView.ItemTemplate>
<DataTemplate>
<Grid Width="200">
<Rectangle Width="auto" Fill="#333333" />
<TextBlock Text="{Binding}" Foreground="#fff" FontSize="80" FontFamily="Verdana" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
但这会影响此集合中的每个对象。如何设置不同的颜色,例如最后一个对象?
答案 0 :(得分:2)
您可以将背景属性添加到填充 ObservableCollection 并在xaml中使用绑定的对象
<Grid Width="200" Background="{Binding Background}" />
通过这种方式,您可以选择网格中的每个项目颜色并动态更改它只是更改对象属性,但背景属性必须是指定有效颜色的字符串
object.Background = "Red"
或者,您可以使用转换器将对象中的某些现有属性转换为颜色。例如,如果您有一些组属性,并且每个组都应使用自己的颜色表示,则可以执行以下操作:
<Grid Width="200" Background="{Binding Group, Converter={StaticResource ColorConverter}}" />
public class ColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (parameter == null)
{
return value;
}
string group = (string) parameter;
string color = "";
if(group.equals("Group 1"))
{
color = "Red";
}else if(group.equals("Group 2"))
{
color = "Green";
}else{
color = "Blue"
}
return color;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return value;
}
}
答案 1 :(得分:1)
您可以使用一个DataTemplateSelector(请参阅:tutorial)