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を返すようにしたい場合空の。どのようにこれを解決するための任意のアイデア?
背景を追加する=透明は問題をうまく解決しました。トリックをありがとう。 –