Condividi tramite


Procedura: applicare uno stile a una riga in un ListView che implementa una GridView

In questo esempio viene illustrato come applicare uno stile a una riga in un ListView controllo che usa una GridViewView modalità .

Esempio

È possibile applicare uno stile a una riga in un ListView controllo impostando un ItemContainerStyle oggetto sul ListView controllo . Impostare lo stile per i relativi elementi rappresentati come ListViewItem oggetti. Fa ItemContainerStyle riferimento agli ControlTemplate oggetti utilizzati per visualizzare il contenuto della riga.

L'esempio completo, da cui vengono estratti gli esempi seguenti, visualizza una raccolta di informazioni sul brano archiviate in un database XML. Ogni brano nel database include un campo di classificazione e il valore di questo campo specifica la modalità di visualizzazione di una riga di informazioni relative al brano.

Nell'esempio seguente viene illustrato come definire ItemContainerStyle per gli ListViewItem oggetti che rappresentano i brani nella raccolta di brani. Gli ItemContainerStyle oggetti di riferimento ControlTemplate che specificano come visualizzare una riga di informazioni sul brano.

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

Nell'esempio seguente viene illustrato un ControlTemplate oggetto che aggiunge la stringa "Strongly Recommended" di testo alla riga. Questo modello viene fatto riferimento in ItemContainerStyle e viene visualizzato quando la classificazione della canzone ha un valore pari a 5 (cinque). ControlTemplate include un GridViewRowPresenter oggetto che dispone il contenuto della riga in colonne come definito dalla GridView modalità di visualizzazione.

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

Nell'esempio seguente viene definito 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>

Vedi anche