2011-11-08 5 views
0

ListViewの行の背景色を個別に変更したいと思います。私はそうすることができましたが、各行の間に白さの2つのピクセルがあります。私は2つの行が同じ色を持っているときに、それらの間に目に見える区切りがないように空白を削除したい。ListViewの行全体の色を設定する方法/ ListViewの行間のスペースをなくす方法はありますか?

ListView screenshot

加え、行が選択され、またははmousedオーバーされた場合、その背景色が非表示になっています。もう一度見えるようにすることはできますか?

コード例(私の実際のコードでは、私はデータバインディングによるカラーを選択):

<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(http://snoopwpf.codeplex.com/)のスヌープのコピーを入手してください。 の場合は、WPF開発のためには、必ずが必須です。

+0

ありがとう、それは私に負の数を試していなかった。私は均等にマージン "0 -1 0 -1"を使うことに決めました。 Icebatによると、これはすべてのコンピュータで起こるわけではないので、スタイル内でPadding "0 1 0 1"のスペーシング変化を補正しようとしましたが、明らかにPaddingはListViewItemに影響しません。 – Qwertie

+0

すべてのコンピュータで発生しない理由は、* Windows *の各テーマのデフォルトがAero、Classic、Luna(XP)など異なるためです。 – Dennis

+0

TextBlockを使用してパディングを調整できました。 GridViewColumnsの1つのCellTemplate内のDataTemplate。選択した項目に色を保持するために、TextBlockの背景を代わりに設定します(背景が選択矩形の上に描画されるために機能します)。不透明度<0.5の色を使用して、選択矩形が引き続き表示されるようにします。つまり、色付けされている列は1つだけですが、それでも十分です。奇妙なことに、余白を2ピクセル多く増やす必要がありました。なぜなら、行間に別のギャップが現れ、選択矩形がちょっと変わって見えるからです。 – Qwertie