2016-03-05 147 views
2

我有一个包含GridView的ListView。我正在尝试更改所选项目的背景以及悬停的项目背景。经过一番搜索之后,我发现控制模板与触发器一起使用,但它们并未开火。ListView项目控件模板触发器没有触发

这里是我的意思 enter image description here

<ListView x:Name="TestListView" Margin="0,0.333,0.333,0" Grid.Row="1" Grid.Column="1" SelectedIndex="0" MouseDoubleClick="Song_List_DoubleClick" SelectionMode="Single" Background="#FF181818" Foreground="White" BorderBrush="#FF181818"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="A" Width="120" DisplayMemberBinding="{Binding A}" /> 
        <GridViewColumn Header="B" Width="50" DisplayMemberBinding="{Binding B}" /> 
        <GridViewColumn Header="C" Width="150" DisplayMemberBinding="{Binding C}" /> 
        <GridViewColumn Header="D" Width="150" DisplayMemberBinding="{Binding D}" /> 
       </GridView> 
      </ListView.View> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ListViewItem}"> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsMouseOver" Value="True"> 
            <Setter Property="Background" Value="#282828"/> 
           </Trigger> 
           <Trigger Property="IsSelected" Value="True"> 
            <Setter Property="Background" Value="#333333" /> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ListView> 

任何帮助是非常赞赏的屏幕截图。谢谢!

回答

2

您设置了ControlTemplate但没有任何子控件来显示数据。你需要修改的样式是ListViewItem,而不是ListBoxItem

你可以这样做:

<ListView x:Name="TestListView" Margin="0,0.333,0.333,0" Grid.Row="1" Grid.Column="1" SelectedIndex="0" SelectionMode="Single" Background="#FF181818" Foreground="White" BorderBrush="#FF181818"> 
    <ListView.Resources> 
     <Style TargetType="{x:Type ListViewItem}"> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="Red"/> 
       </Trigger> 
       <Trigger Property="IsSelected" Value="True"> 
        <Setter Property="Background" Value="Blue" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListView.Resources> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="A" Width="120" DisplayMemberBinding="{Binding A}" /> 
      <GridViewColumn Header="B" Width="50" DisplayMemberBinding="{Binding B}" /> 
      <GridViewColumn Header="C" Width="150" DisplayMemberBinding="{Binding C}" /> 
      <GridViewColumn Header="D" Width="150" DisplayMemberBinding="{Binding D}" /> 
     </GridView> 
    </ListView.View> 
</ListView> 
+0

感谢@Sakura。 :) 有用。 – HaloMediaz

+0

不客气:) – Sakura