如何设置整个ListView行颜色/消除ListView行之间的空间?

时间:2011-11-08 23:39:30

标签: .net wpf listview

我想单独更改ListView行的背景颜色。我已经能够这样做,但每行之间有两个像素的白度。我想消除空白区域,以便当两行具有相同的颜色时,它们之间没有可见的划分。

ListView screenshot

另外,当选择行或鼠标悬停时,其背景颜色将被隐藏。我可以再次看到它吗?

示例代码(在我的实际代码中,我通过数据绑定选择颜色):

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListView>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                    <!--Doesn't help!-->
                    <Setter Property="Margin" Value="0 0 0 0"/>
                    <Setter Property="Padding" Value="0 0 0 0"/>
                    <Setter Property="Background" Value="Lime"/>
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="120" Header="Date" />
                    <GridViewColumn Width="120" Header="Day Of Week"  
           DisplayMemberBinding="{Binding DayOfWeek}" />
                    <GridViewColumn Width="120" Header="Year" 
           DisplayMemberBinding="{Binding Year}" />
                </GridView>
            </ListView.View>
            <sys:DateTime>1/2/3</sys:DateTime>
            <sys:DateTime>4/5/6</sys:DateTime>
            <sys:DateTime>7/8/9</sys:DateTime>
            <sys:DateTime>10/11/12</sys:DateTime>
        </ListView>
    </Grid>
</Window>

1 个答案:

答案 0 :(得分:1)

要消除您提到的空白,您需要使用0,-2,0,0的负余量。如果这不起作用,那么您可能需要更深入地查看GridViewPresenter以获取边距/填充属性。

另外,请从Codeplex(http://snoopwpf.codeplex.com/)获取 Snoop 的副本。对于任何 WPF开发来说,这是绝对必要的。