2013-03-26 32 views
8

WPF ListBox'umun hover efekti'u devre dışı bırakmamı sağlayan internet üzerinde birçok çözüm buldum ve denedim ancak bunların hiçbiri benim için işe yaramıyordu. ,WPF ListBox hover etkisini kapatır

<ListBox ItemsSource="{Binding Logs}" Grid.Column="1" Width="800" Height="100" > 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Style.Triggers> 
       <Trigger Property="Control.IsMouseOver" Value="True"> 
        <Setter Property="Control.Background" Value="Transparent" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 

Ancak:

hover effect

Bu XAML kod (basitleştirilmiş versiyonu) olduğunu Şu anda var: Bu ekran görüntüsü Saklayacak veya kurtulmak istiyorum hover efekti gösterir Bir sebepten ötürü benim için çalışmıyor gibi gözüküyor. Ebeveyn ListBox'um (arka planda bulunan) veya başka bir kontrol, childs stilini herhangi bir şansla geçersiz kılabilir mi? (Ebeveyn stilini de geçersiz kılmaya çalıştım).

Herhangi bir yardım çok takdir edilecektir. :(

+3

bir tetikleyici eklemek bir ListBoxItem varsayılan stilini değiştirin ve bende yok hover etkisi varsayılan olarak – Tomtom

+0

Oldukça kafa karıştırıcı. Windows 8'de (ekran görüntüsünde görüldüğü gibi) ve Windows 7'de, hover efekti çirkin bir maviyle görüntülendiğinde test ettim ... Yeni oluşturmayı deneyeceğim Bir fark yaratıp yaratmadığını doğrulamak için bir liste halinde bir liste kutusu ile wpf-uygulama – beta

+0

Evet haklısınız, ListBox varsayılan olarak bir hover efekti bile yok. Yani sanırım orada, çünkü tüm alt kontroller için küresel bir tarz oluşturduk. Bu stili geçersiz kılacak bir yol var mı? Şu anda beta

cevap

13

<Style TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/> 
     <Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/> 
     <Setter Property="Padding" Value="2,0,0,0"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ListBoxItem}"> 
        <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true"> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsSelected" Value="true"> 
          <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
          <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/> 
         </Trigger> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="IsSelected" Value="true"/> 
           <Condition Property="Selector.IsSelectionActive" Value="false"/> 
          </MultiTrigger.Conditions> 
          <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}"/> 
          <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}}"/> 
         </MultiTrigger> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Sadece Ben sadece bir liste ile yeni bir wpf-uygulama oluşturulan

<Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Background" Value="Transparent"/> 
         </Trigger> 
+5

Neden