Udostępnij za pośrednictwem


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

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

Przykład

Wiersz w kontrolce ListView można stylować, ustawiając kontrolkę ItemContainerStyleListView na. Ustaw styl dla elementów, które są reprezentowane jako ListViewItem obiekty. Odwołuje ItemContainerStyleControlTemplate 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ż