次のような ListView があります。
<ListView x:Name="LocationList"
BorderBrush="{x:Null}"
Margin="50,20,20,50"
ItemsSource="{Binding Locations}" />
そして、次のようなスタイルとコントロール テンプレート:
<ControlTemplate x:Key="SelectedTemplate" TargetType="ListViewItem">
<Border SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}" >
<ContentControl SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Content="{TemplateBinding Content}"
Margin="{TemplateBinding Margin}"
FontSize="{TemplateBinding FontSize}"/>
</Border>
</ControlTemplate>
<Style x:Name="ListStyle" TargetType="ListViewItem">
<Setter Property="BorderBrush" Value="{x:Null}"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="FontSize" Value="30"/>
<Setter Property="Margin" Value="3,3,3,3"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Gray"/>
<Setter Property="Template" Value="{StaticResource SelectedTemplate}" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Property="Selector.IsSelectionActive" Value="true" />
</MultiTrigger.Conditions>
<Setter Property="Foreground" Value="Red" />
<Setter Property="Template" Value="{StaticResource SelectedTemplate}" />
</MultiTrigger>
</Style.Triggers>
</Style>
マウスを使用する場合、これは期待どおりに機能します。リスト項目の上にカーソルを置くと「IsMouseOver」スタイルがアクティブになり、クリックすると「IsSelected」スタイルがアクティブになります。ただし、タッチ スクリーンを使用してリスト項目をクリックすると、「IsMouseOver」スタイルのみがアクティブになり、項目が選択されていない場合、選択するには同じ項目をもう一度クリックする必要があります。指を押したままにすると (カーソルが表示されます)、指をドラッグしても「IsMouseOver」スタイルがアクティブになりません。