2011-08-10 17 views
2

2つの列が定義された単純なWPF ListViewがあります。デフォルトでは、行の任意の部分にマウスを移動すると、その行がトラッキングされた外観に表示されます(Windows 7とAeroを使用しています)。ここでは、XAMLは、私がListViewItemスタイルをオーバーライドして、追跡行の外観をカスタマイズしたい...予想通り、この作業を示す簡単な例のためにWPF ListViewItem.IsMouseOverが行全体に対してTrueを返さない

<Page 
    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"> 
    <Grid> 
     <ListView> 
     <ListView.View> 
      <GridView> 
      <GridViewColumn Header="First" Width="200"/> 
      <GridViewColumn Header="Second" Width="200"/> 
      </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> 
    </Page> 

です。ここで私は上記ListViewに追加したサンプルのXAMLは、マウスは、2列の一方内のテキストの真上にあるときにのみ、追跡として行を示し...

<ListView.ItemContainerStyle> 
    <Style TargetType="{x:Type ListViewItem}"> 
     <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBoxItem"> 
      <Border x:Name="Bd"> 
       <GridViewRowPresenter /> 
      </Border> 
      <ControlTemplate.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter TargetName="Bd" Property="Background" Value="Red"/> 
      </Trigger> 
      </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
     </Setter> 
    </Style> 
    </ListView.ItemContainerStyle> 

あります。マウスが描画されたテキストの間にある場合、または最後の列を超えて右側から外れる場合は、トラッキングとして表示されません。

トリガーは、実際の内容がマウスの下にある場合にのみTrueを返します。行のその部分があっても、マウスが行のどの部分にあってもTrueを返すようにしたい場合空の。どのようにこれを解決するための任意のアイデア?

答えて

1

境界線の水平線を「ストレッチ」に設定し、透明(またはその他のデフォルトの)背景を与えます。これは、マウスに何かを強調表示するようになります

+0

背景を追加する=透明は問題をうまく解決しました。トリックをありがとう。 –

関連する問題