我在listview中使用gridview。我的网格视图有两个colums ID和Result.I我正在从List加载gridview。所以结果列有两种类型的值正面和负面。我想显示文本颜色绿色正面,红色表示否定,并在文本块旁边添加一个图标。
在xaml中可以吗?或者我正在尝试实施哪些是不可能的?
如何根据来自列表的值将颜色绑定到网格中?
<ListView Height="166" HorizontalAlignment="Left" Margin="23,0,0,0" Name="lvStatus" VerticalAlignment="Top" Width="264">
<ListView.View>
<GridView>
<GridViewColumn Header="Result">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Result}"/>
<Image ></Image>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
答案 0 :(得分:1)
创建Converter
,如果指定的值高于0,则返回Green
,如果低于0,则返回Red
,并使用它来确定文本的前景颜色
public class NumberToColorBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is double)
{
return (((double)value) > 0 ? Brushes.Green : Brushes.Red);
}
throw new Exception("Invalid Value");
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后您可以像这样使用您的转换器:
<Window.Resources>
<local:NumberToColorBrushConverter x:Key="NumberToColorBrushConverter" />
</Window.Resources>
<TextBlock Text="{Binding Result}" Foreground={Binding Result,
Converter={StaticResource NumberToColorBrushConverter}}" />
修改强>
如果您的数据中有一个确定正面或负面的值,那么您甚至不需要使用转换器。这是一个使用DataTrigger
的示例<Window.Resources>
<Style x:Key="ResultTextBlockStyle" TargetType="{x:Type TextBlock}">
<Style.Triggers>
<Setter Property="Foreground" Value="Green" />
<DataTrigger Binding="{Binding PositiveOrNegative}" Value="Negative">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<TextBlock Text="{Binding Result}" Style="{StaticResource ResultTextBlockStyle}" />