0

リストビューで選択を解除したアイテムを選択解除した後、他のアイテムを選択してから選択しない限り、「IsMouseOver」の色が表示されないという問題があります。ItemContainerStyleでは、独自の値を定義したいので、フォーカス/アンフォーカスのデフォルトの色を透明に設定しました。誰かがこれを見て、「IsMouseOver」が選択解除されたアイテムで機能しない理由を教えてもらえますか?

xaml:

<ListView Name="lstPhoneCarrier" HorizontalAlignment="Left" VerticalAlignment="Bottom" Width="408" Height="145" 
  ItemsSource="{Binding ShowAllCarrierInfo, Mode=TwoWay}" 
  ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Visible" 
  SelectionMode="Single">

<ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
        <Style.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
        </Style.Resources>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Yellow" />
            </Trigger>
        </Style.Triggers>
    </Style>
</ListView.ItemContainerStyle>

<ListView.ItemTemplate>
    <DataTemplate>
        <Label x:Name="lblCarrier" HorizontalAlignment="Left">
            <Label.Content>
                <StackPanel Orientation="Horizontal">
                    <TextBlock>
                        <TextBlock.Text>
                            <MultiBinding StringFormat="{}{0}-{1}">
                                <Binding Path="Name" />
                                <Binding Path="Description" />
                             </MultiBinding>
                        </TextBlock.Text>
                    </TextBlock>
                </StackPanel>
            </Label.Content>
        </Label>
        <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding Path=CarrierSelected}" Value="True" >
                <Setter TargetName="lblCarrier" Property="Background" Value="Pink" />
            </DataTrigger>
        </DataTemplate.Triggers>
    </DataTemplate>
</ListView.ItemTemplate>

4

1 に答える 1

0

ハイライトブラシをオーバーライドして、選択範囲がユーザーに表示されないようにしましたが、内部的selectionには機能していcaptures the mouseますMouseOver events not getting raised for that item

マウスがキャプチャされないように、に設定Focusableする必要があります-falselistBoxItemItemContainerStyle

<ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
         <Setter Property="Focusable" Value="False"/> // <---- HERE
        <Style.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
                             Color="Transparent" />
            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
                             Color="Transparent" />
        </Style.Resources>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Yellow" />
            </Trigger>
        </Style.Triggers>
    </Style>
</ListView.ItemContainerStyle>
于 2013-03-27T14:37:24.793 に答える