2017-06-01 129 views
0

你能帮助我,在默认情况下WPF ListView中有这样的样式选择的项目 enter image description hereWPF的ListView将selectedItem风格

,但我需要使它像坚实的背景上选择项目这样

enter image description here

我如何做到这一点?

+0

我在收件箱中收到https://stackoverflow.com/questions/42235802/listview-selected-item-style-override/42236093#42236093这一点,它是我所需要的。 – Sergey92zp

+1

@ mm8对不起,我第一次没有注意到它。谢谢。奇怪的是,没有任何参考链接是在收件箱中,所以我不知道它从哪里去。 – Sergey92zp

回答

1

在Windows 7,您可以覆盖系统颜色画笔:

<ListView> 
    <ListView.Resources> 
     <Style TargetType="ListViewItem"> 
      <Style.Resources> 
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Blue"/> 
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White"/> 
      </Style.Resources> 
     </Style> 
    </ListView.Resources> 
    ... 
</ListView> 

在Windows 8和后你应该重写ListViewItem的控制模板这里解释:

ListView Selected Item Style Override

1

你可以通过ControlTemplate解决这个问题。在这里看到:https://blog.jsinh.in/change-background-color-of-selected-listboxitem-listbox-in-wpf/

<Style TargetType="{x:Type ListBoxItem}"> 
<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> 
       <MultiTrigger> 
        <MultiTrigger.Conditions> 
         <Condition Property="Selector.IsSelectionActive" 
          Value="False" />       
         <Condition Property="IsSelected" 
          Value="True" /> 
        </MultiTrigger.Conditions> 
        <Setter Property="Background" 
          TargetName="Bd" 
          Value="DarkOrange" /> 
       </MultiTrigger> 
       <MultiTrigger> 
        <MultiTrigger.Conditions> 
         <Condition Property="Selector.IsSelectionActive" 
            Value="True" /> 
         <Condition Property="IsSelected" 
            Value="True" /> 
        </MultiTrigger.Conditions> 
        <Setter Property="Background" 
          TargetName="Bd" 
          Value="OrangeRed" /> 
       </MultiTrigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 
</Style>