如何根据Windows RT上的绑定值更改背景颜色

时间:2012-12-04 12:03:31

标签: .net xaml windows-runtime winrt-xaml

如何使用Windows RT / Windows应用商店应用中的<ListView>控件在Excel(没有灰线)中看到这种效果(假设我有一个整数列表用作我的{{ 1}})。

从本质上讲,我想知道直接应用样式或设置背景颜色的最有效方法,具体取决于每个数据绑定值的含义。

data bars

我们真的需要something like this。但看起来Windows RT应用程序不支持数据触发器。

1 个答案:

答案 0 :(得分:3)

ItemTemplete创建矩形上,然后使用下面的Fill

将其ValueConverter属性绑定到您的列表元素
public sealed class IntegerToColorBrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        switch ((int)value)
        {
            case 5:
                return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Green);
            case 10:
                return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Yellow);
            case 15:
                return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Orange);
            case 25:
                return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Red);
            case 0:
                return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.DarkGreen);
            default:
                return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Transparent);
        }
    }

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

XAML:

    <ResourceDictionary>
        <local:IntegerToColorBrushConverter x:Key="IntegerToColorBrushConverter"/>
        <DataTemplate x:Key="DataTemplate1">
            <Grid>
                <Rectangle Fill="{Binding Converter={StaticResource IntegerToColorBrushConverter}, Mode=OneWay}" />
            </Grid>
        </DataTemplate>
    </ResourceDictionary>

    <ListView ItemsSource="{Binding Elements}" ItemTemplate="{StaticResource DataTemplate1}"/>