1

次のような 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」スタイルがアクティブになりません。

4

0 に答える 0