2011-11-08 35 views
0

我想單獨更改ListView行的背景顏色。我已經能夠這樣做了,但每行之間有兩個像素的白色。我想消除白色空間,以便當兩行具有相同的顏色時,它們之間沒有可見的分隔。如何設置整個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> 
+0

我試過你的代碼,它工作正常,行沒有空白。無論如何,您可以嘗試爲ListView.ItemContainerStyle設置負邊距。 你隱藏的背景是什麼?選中的行突出顯示,但取消選擇後,它將返回到之前的狀態。 – icebat

+0

我的意思是當一個項目被突出顯示時,用戶看不到它是什麼顏色。只顯示選擇矩形或者將其與背景顏色混合會更好。 – Qwertie

回答

1

爲了消除你提到你需要使用的0,-2,0,0陰性切緣的空白。如果這不起作用,那麼您可能需要更深入地瞭解GridViewPresenter以獲取保證金/填充資產。

另外,從Codeplex獲得Snoop的副本(http://snoopwpf.codeplex.com/)。對於任何 WPF開發來說,這絕對是必不可少的。

+0

謝謝,我沒有想過嘗試負數。我決定使用Margin「0 -1 0 -1」來獲得均勻。根據icebat,這不會發生在所有的計算機上,所以我試圖用樣式中的Padding「0 1 0 1」來補償間距變化,但顯然Padding對ListViewItem沒有影響。 – Qwertie

+0

它不會發生在所有計算機上的原因是因爲*每個* Windows主題的默認設置都不同,例如Aero,Classic,Luna(XP)等。 – Dennis

+0

我能夠調整填充,使用TextBlock其中一個GridViewColumns的CellTemplate中的DataTemplate。爲了保留選定項目上的顏色,我使用Opacity <0.5的顏色來設置TextBlock的背景(這是因爲此背景繪製在選區矩形的頂部),因此選區矩形仍然可見。這意味着只有一列是彩色的,但對我來說已經足夠了。奇怪的是,我不得不增加兩個像素的邊距,因爲行之間出現了另一個間隙......而選擇矩形看起來有點奇怪......但無論如何。 – Qwertie