Инструкция по Изменению стиля строки в ListView, который реализует GridView

В этом примере показано, как задать стиль строки в элементе управления ListView, который использует режим GridViewView.

Пример

Чтобы задать стиль строки в элементе управления ListView, можно задать атрибут ItemContainerStyle элемента управления ListView. Задайте стиль для элементов, представленных в виде объектов ListViewItem. Атрибут ItemContainerStyle ссылается на объекты ControlTemplate, которые используются для отображения содержимого строк.

В полном примере, из которого взяты следующие примеры, отображается коллекция сведений о композициях, хранящихся в базе данных XML. Каждая композиция в базе данных имеет поле оценки, и значение этого поля определяет способ отображения строки со сведениями о композиции.

В следующем примере показано, как определить атрибут ItemContainerStyle для объектов ListViewItem, представляющих композиции в коллекции композиций. Атрибут ItemContainerStyle ссылается на объекты ControlTemplate, которые задают способ отображения строки с информацией о композиции.

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

В следующем примере показан шаблон ControlTemplate, который добавляет текстовую строку "Strongly Recommended" к строке. На этот шаблон ссылается атрибут ItemContainerStyle, и в нем отображается рейтинг композиции, имеющий значение 5 (пять). ControlTemplate включает объект GridViewRowPresenter, который располагает содержимое строки в столбцах в соответствии с режимом отображения GridView.

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

В следующем примере определяется 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>

См. также