Изменить цвет текста внутри gridview в wpf? - PullRequest
1 голос
/ 16 ноября 2011

Я использую вид сетки внутри списка. Мой вид сетки имеет два столбца ID и Результат. Я загружаю вид сетки из списка. Таким образом, столбец результата имеет два типа значений: положительный и отрицательный. Я хочу, чтобы текст зеленого цветадля положительный и красный для отрицательный , а также прикрепите значок рядом с текстовым блоком.

Возможно ли это в 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>

1 Ответ

1 голос
/ 16 ноября 2011

Создайте Converter, который возвращает Green, если указанное значение выше 0, и Red, если оно ниже 0, и используйте его для определения цвета переднего плана вашего текста

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();
    }
}
* 1006.* Затем вы можете использовать свой конвертер следующим образом:
<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}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...