Нужно ли отображать разные цвета в BAR - чате с помощью silverlight? - PullRequest
0 голосов
/ 23 сентября 2011

Обычно в Silverlight мы можем создать чат, но мне нужно создать BAR-чат, основываясь на следующих требованиях.

Пример: Студенты оценивают 50,70,60,90 ..... вот так, имея .for для меня, основываясь на оценках, мне нужно создать разные цвета в баре. chat> ниже 50 означает красный цвет,> 70 означает янтарный цвет,> 90 означает зеленый цвет ...

Мне нужны разные цвета для отображения в баре чата на основе отметок ...

1 Ответ

0 голосов
/ 23 сентября 2011

Использование IValueConverter является вариантом для вас.

<Grid x:Name="LayoutRoot" Background="Gray">
        <Grid.Resources>
            <local:NumberToBrushConverter x:Key="NumberToBrushConverter" />
        </Grid.Resources>
        <ListBox x:Name="List1">
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="Padding" Value="0" />
                </Style>
            </ListBox.ItemContainerStyle>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid Background="{Binding Converter={StaticResource NumberToBrushConverter}}">
                        <TextBlock Text="{Binding}" />
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>

И код позади:

int[] numbers = new int[] { 10, 20, 30 };
List1.ItemsSource = numbers;

И класс ValueConverter:

public class NumberToBrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is int)
        {
            switch ((int)value)
            {
                case 10: return new SolidColorBrush(Colors.Red);
                case 20: return new SolidColorBrush(Colors.Green);
                case 30: return new SolidColorBrush(Colors.Blue);
            }
        }

        return Colors.Transparent;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
}
...