将GridView Cell模板更改为Xaml中的特定颜色

时间:2011-04-05 15:21:32

标签: binding

我有一个Gridview,我用它绑定一个集合,现在我想根据bool值更改单个列的颜色,如果是+ ve,则背景应为蓝色,如果-ve然后显示背景为黄色。 我尝试使用数据触发器,并使用转换器,但无法完成任务。

xaml文件

  <Grid.Resources>
        <Style x:Key=" ColorStyle" TargetType="{x:Type TextBlock}">

            <Setter Property="Text" Value="{Binding Path=CurrentPrice}"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=PriceStatus}" Value="true">
                    <Setter Property="TextBlock.Background" Value="Blue"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=PriceStatus}" Value="false">
                    <Setter Property="Block.Background" Value="Yellow"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>           
    </Grid.Resources>

... ... .. 。                                

                <GridViewColumn Header="Price" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Style="{StaticResource ColorStyle}"
                                       />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

并使用转换器。

公共类ColorConverter:IValueConverter     {

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if ((bool)value)
            return Brushes.Blue;
        else
            return Brushes.Yellow;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }


}

xaml文件                                  - &GT;                                                                                                                                                                                          - &GT;                                    。 。 。                                

                <GridViewColumn Header="Price" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                          <DataTemplate>
                            <TextBlock Style="{StaticResource ColorStyle}"
                                       Background="{Binding PriceStatus, Converter={StaticResource ColorConverter}}"
                                       />
                        </DataTemplate>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

PriceStatus是CLR布尔属性,它为CurrentPrice的-ve值设置为false。

由于

0 个答案:

没有答案