更改ListView中GridView行的背景颜色

时间:2012-04-03 19:04:34

标签: wpf listview gridview

我有一个列表视图如下:

<ListView x:Name="lvLedger" 
              Height="{Binding Path=GridHight, ElementName=ledgerList}" 
              Width="{Binding Path=GridWidth, ElementName=ledgerList}" 
              ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
              ScrollViewer.VerticalScrollBarVisibility="Auto" 
              ItemsSource="{Binding}" 
              BorderThickness="0" 
              Background="Transparent" 
              BorderBrush="Transparent" 
              DataContextChanged="lvLedger_DataContextChanged">
        <ListView.View>
            <GridView>
                <GridViewColumn x:Name="c2ServiceDate" Header="Service Date" Width="82" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=servicedate}"  
                                ToolTipService.ShowDuration="60000" 
                                ToolTipService.InitialShowDelay="0" 
                                ToolTip="{Binding Path=type}" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn x:Name="c3CPT" Header="Code" Width="50">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=cpt}"  
                                ToolTipService.ShowDuration="60000" 
                                ToolTipService.InitialShowDelay="0" 
                                ToolTip="{Binding Path=type}" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
        <!--More columns here-->        </GridViewColumn></GridView></ListView.View></ListView>

我希望能够根据服务日期和代码的组合更改行的背景颜色。所以我可能连续3行具有相同的服务日期和代码,它们应该具有相同的背景,然后是2行具有不同的颜色,然后基于相同的规则交替

1/19/11 356(蓝色)
1/19/11 356(蓝色)
1/19/11 235(红色)
2/20/11 356(蓝色)
2/20/11 356(蓝色)
2/20/11 356(蓝色)
2/21/11 564(红色)
2/21/11 564(红色)
2/21/11 564(红色)
2/21/11 564(红色)
2/25/11 798(蓝色)
和... ... ...

ItemSource被外部控件绑定到DataView。

我真的不知道我怎么能做那样的事情,任何帮助都会得到满足。

1 个答案:

答案 0 :(得分:2)

如何将ColorProperty添加到您的行(行)绑定的类/模型中。那时你已经有了日期和数字。一旦你设置它们,也设置颜色,现在没有转换器,你可以只触发该属性:

<Style x:Key="ListViewItemStyle" TargetType="ListViewItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Border x:Name="Border" SnapsToDevicePixels="true">
                        <GridViewRowPresenter VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
                        <Border.Style>
                            <Style TargetType="Border">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding ColorProperty}" Value="Blue">
                                        <Setter Property="Background" Value="Blue"/>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding ColorProperty}" Value="Red">
                                        <Setter Property="Background" Value="Red"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </Border.Style>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>