2013-03-27 45 views
0

我有一个问题,其中取消选择的项目在我的列表视图中没有显示“IsMouseOver”的颜色后,我取消选择它,除非我选择其他,然后选择它。在我的ItemContainerStyle中,我将focus/unfocus的默认颜色设置为透明,因为我想定义自己的值。任何人都可以看看这个,并告诉我为什么“IsMouseOver”不适用于取消选择的项目?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> 

回答

0

你必须重写亮点刷,这样的选择是不是对用户可见,但在内部selection仍然在工作,其captures the mouse,因此MouseOver events not getting raised for that item

您需要设置FocusablefalselistBoxItem使鼠标并没有ItemContainerStyle获取捕捉 -

<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> 
+0

通过增加你的建议,为的SelectedItem属性不能正常工作。 – user1884032 2013-03-27 15:03:09

+0

是的,这是我提到的,因为项目被选中,因此鼠标悬停事件不会被提出。所以,为此,你必须使物品不可聚焦。这意味着它在选择和鼠标悬停之间进行权衡。 – 2013-03-27 15:26:39