我有一个Gridview,我用它绑定一个集合,现在我想根据bool值更改单个列的颜色,如果是+ ve,则背景应为蓝色,如果-ve然后显示背景为黄色。 我尝试使用数据触发器,并使用转换器,但无法完成任务。
xaml文件
<Grid.Resources>
<Style x:Key=" ColorStyle" TargetType="{x:Type TextBlock}">
<Setter Property="Text" Value="{Binding Path=CurrentPrice}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=PriceStatus}" Value="true">
<Setter Property="TextBlock.Background" Value="Blue"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=PriceStatus}" Value="false">
<Setter Property="Block.Background" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
... ... .. 。
<GridViewColumn Header="Price" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Style="{StaticResource ColorStyle}"
/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
并使用转换器。
公共类ColorConverter:IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((bool)value)
return Brushes.Blue;
else
return Brushes.Yellow;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
xaml文件 - &GT; - &GT; 。 。 。
<GridViewColumn Header="Price" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<DataTemplate>
<TextBlock Style="{StaticResource ColorStyle}"
Background="{Binding PriceStatus, Converter={StaticResource ColorConverter}}"
/>
</DataTemplate>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
PriceStatus是CLR布尔属性,它为CurrentPrice的-ve值设置为false。
由于