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();
}
}
谢谢。
安东尼
我想知道是否可以在 ListView 中的文本块上设置条件。我解释一下:
我有一个包含一些数据的模型,这个模型中有一个 "amount"。如果数量是负数我想把前景变成红色,如果数量是正数我想把前景变成绿色。
<TextBlock RelativePanel.AlignRightWithPanel="True"
Foreground="Red"
FontWeight="Bold">
<Run Text="{Binding Amount}" />
<Run Text="€" />
</TextBlock>
这是文本块,他在ListView.ItemTemplate中。
此致,
安东尼
你应该使用转换器。创建一个派生自 IValueConverter
.
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();
}
}
谢谢。
安东尼