Procedura: applicare uno stile a una riga in un ListView che implementa una GridView
Aggiornamento: novembre 2007
In questo esempio viene illustrato come disegnare una riga in un controllo ListView che implementa una modalitàViewdi GridView.
Esempio
È possibile disegnare una riga in un controllo ListView impostando una proprietà ItemContainerStyle sul controllo ListView. Impostare lo stile per gli elementi rappresentati come oggetti ListViewItem. La proprietà ItemContainerStyle fa riferimento agli oggetti ControlTemplate utilizzati per visualizzare il contenuto della riga.
Nell'esempio completo, da cui sono estratti gli esempi seguenti, viene visualizzato un insieme di informazioni su un brano archiviato in un database XML. A ogni brano nel database corrisponde un campo di valutazione, il cui valore specifica come visualizzare una riga di informazioni sul brano.
Nell'esempio riportato di seguito viene illustrato come definire la proprietà ItemContainerStyle per gli oggetti ListViewItem che rappresentano i brani nell'insieme di brani. La proprietà ItemContainerStyle fa riferimento agli oggetti ControlTemplate che specificano come visualizzare una riga di informazioni su un 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 riportato di seguito viene illustrato un oggetto ControlTemplate che aggiunge la stringa di testo "Strongly Recommended" alla riga. A questo modello, visualizzato quando la valutazione del brano ha un valore pari a 5 (cinque), viene fatto riferimento nella proprietà ItemContainerStyle. L'oggetto ControlTemplate include un oggetto GridViewRowPresenter che applica il layout al contenuto della riga nelle colonne in base alla modalità di visualizzazione 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>
Nell'esempio riportato di seguito viene definito l'oggetto 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>
Per l'esempio completo, vedere Esempio di ListView con ListViewItem personalizzati.
Vedere anche
Concetti
Panoramica sul controllo ListView
Applicazione di stili e modelli