UWP 颜色前景 ListView 条件

UWP Color Foreground ListView Condition

我想知道是否可以在 ListView 中的文本块上设置条件。我解释一下:

我有一个包含一些数据的模型,这个模型中有一个 "amount"。如果数量是负数我想把前景变成红色,如果数量是正数我想把前景变成绿色。

 <TextBlock RelativePanel.AlignRightWithPanel="True"
                               Foreground="Red"
                               FontWeight="Bold">
                        <Run Text="{Binding Amount}" />
                        <Run Text="€" />
 </TextBlock>

这是文本块,他在ListView.ItemTemplate中。

此致,

安东尼

你应该使用转换器。创建一个派生自 IValueConverter.

的 class(例如 AmountColorConverter
public object Convert(object value, ...)
{
    var val = (double)value;
    return val >= 0
        ? Colors.Green
        : Colors.Red;
}

实施后,在 XAML 中创建转换器实例并在绑定中引用它:

<converter:AmountColorConverter x:Key="AmountColorConverter"/>
<TextBlock RelativePanel.AlignRightWithPanel="True"
           Foreground="{Binding Amount, Converter={StaticResource AmountColorConverter}}"
           FontWeight="Bold">
    <Run Text="{Binding Amount}" />
    <Run Text="€" />
</TextBlock>

我已经试过了。 他是我的 xaml 代码:

<TextBlock HorizontalAlignment="Right"
           Grid.Column="2"
           Grid.Row="0"
           Foreground="{Binding Amount, Mode=TwoWay, Converter={StaticResource ForegroundColorAmount}}"
           FontWeight="Medium">
               <Run Text="{Binding Amount}" Foreground="{Binding Amount, Mode=TwoWay, Converter={StaticResource ForegroundColorAmount}}" />
               <Run Text="€" />

当然我使用了 using :

xmlns:converters="using:Sample.Converters"

这是我的转换器 class :

    public class ForegroundColorAmount : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        var val = (double)value;
        if (val >= 0)
        {
            return Colors.Green;
        }
        else
        {
            return Colors.Red;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

谢谢。

安东尼