Jak nadać styl wierszowi w ListView, który implementuje GridView

W tym przykładzie pokazano, jak stylować wiersz w kontrolce ListView korzystającej z GridView View trybu.

Przykład

Wiersz w kontrolce ListView można stylować, ustawiając kontrolkę ItemContainerStyle ListView na. Ustaw styl dla elementów, które są reprezentowane jako ListViewItem obiekty. Odwołuje ItemContainerStyle ControlTemplate się do obiektów używanych do wyświetlania zawartości wiersza.

Kompletny przykład, z którego wyodrębniono poniższe przykłady, przedstawia kolekcję informacji o piosenkach przechowywanych w bazie danych XML. Każda piosenka w bazie danych ma pole klasyfikacji, a wartość tego pola określa sposób wyświetlania wiersza informacji o piosence.

W poniższym przykładzie pokazano, jak zdefiniować ItemContainerStyle obiekty ListViewItem reprezentujące utwory w kolekcji piosenek. Odwołania ItemContainerStyle do ControlTemplate obiektów określających sposób wyświetlania wiersza informacji o utworze.

 <ListView.ItemContainerStyle>
  <Style TargetType="{x:Type ListViewItem}"  >
    <Setter Property="Template"
          Value="{StaticResource Default}"/>
    <Style.Triggers>
      <DataTrigger Binding="{Binding XPath=@Rating}" Value="5">
              <Setter Property="Template" 
              Value="{StaticResource StronglyRecommended}"/>
      </DataTrigger>
      <DataTrigger Binding="{Binding XPath=@Rating}" Value="4">
        <Setter Property="Template" 
              Value="{StaticResource Recommended}"/>
      </DataTrigger>
    </Style.Triggers>
  </Style>
</ListView.ItemContainerStyle>

W poniższym przykładzie pokazano element ControlTemplate , który dodaje ciąg "Strongly Recommended" tekstowy do wiersza. Ten szablon jest przywołyny w elemencie ItemContainerStyle i jest wyświetlany, gdy ocena utworu ma wartość 5 (pięć). Obiekt ControlTemplate zawiera GridViewRowPresenter obiekt, który określa zawartość wiersza w kolumnach zgodnie z definicją w trybie GridView widoku.

<ControlTemplate x:Key="StronglyRecommended" 
                 TargetType='{x:Type ListViewItem}'>
  <StackPanel Background="Beige">
    <GridViewRowPresenter Content="{TemplateBinding Content}"
       Columns="{TemplateBinding GridView.ColumnCollection}"/>
    <TextBlock Background="LightBlue" Text="Strongly Recommended" />
  </StackPanel>
</ControlTemplate>

W poniższym przykładzie zdefiniowano element GridView.

<ListView.View>
  <GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
    <GridViewColumn Header="Name" 
                    DisplayMemberBinding="{Binding XPath=@Name}" 
                    Width="100"/>
    <GridViewColumn Header="Time" 
                    DisplayMemberBinding="{Binding XPath=@Time}" 
                    Width="80"/>
    <GridViewColumn Header="Artist"  
                    DisplayMemberBinding="{Binding XPath=@Artist}" 
                    Width="80" />
    <GridViewColumn Header="Disk" 
                    DisplayMemberBinding="{Binding XPath=@Disk}"  
                    Width="100"/>
  </GridView>
</ListView.View>

Zobacz też