列表视图项目的替代颜色

时间:2018-09-27 05:22:48

标签: c++ windows-10-universal uwp-xaml

我的xaml文件中具有以下列表视图。它与平台集合绑定。其中包含警告和错误消息。文本块前景色设置为红色。我需要为不同的消息设置不同的颜色。如何为各种消息设置不同的颜色?

<ListView x:Name="mylist" Width="578" ScrollViewer.VerticalScrollMode="Enabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Background="White" Grid.Row="2" Grid.ColumnSpan="3" ItemsSource="{x:Bind Errors}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical" ScrollViewer.VerticalScrollBarVisibility="Auto">
                <TextBlock Foreground="Red" TextWrapping="Wrap" Text="{Binding}" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

请提出建议。

1 个答案:

答案 0 :(得分:0)

  

文本块前景色设置为红色。我需要为不同的消息设置不同的颜色。

您可以使用IValueConverter接口进行处理,使用转换器类将文本块SolidBrush的不同消息类型转换为不同的Foreground。您可以参考以下ColorConverter。

public class ColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (Boolean.Parse(value.ToString()))
        {
            return new SolidColorBrush(Colors.Green);
        }
        else
        {
            return new SolidColorBrush(Colors.Gray);
        }
    }

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

用法

<Page.Resources>
        <local:ColorConverter x:Key="Converter"/>
</Page.Resources>

       ......

<TextBlock Text="{Binding info}" Foreground="{Binding messageType,Converter={StaticResource Converter}}"/>