Freigeben über


Gewusst wie: Formatieren einer Zeile in einem ListView, in dem ein GridView implementiert ist

Dieses Beispiel zeigt, wie Sie eine Zeile in einem ListView-Steuerelement gestalten, das einen GridView View-Modus verwendet.

Beispiel

Sie können eine Zeile in einem ListView-Steuerelement formatieren, indem Sie ein ItemContainerStyle imListView-Steuerelement festlegen. Legen Sie den Stil für seine Objekte fest, die als ListViewItem-Objekte dargestellt werden. ItemContainerStyle verweist auf ControlTemplate-Objekte, die zur Anzeige des Zeileninhalts verwendet werden.

Das vollständige Beispiel, aus dem die folgenden Beispiele stammen, zeigt eine Auflistung von Informationen zu Musiktiteln, die in einer XML-Datenbank gespeichert sind. Jeder Titel in der Datenbank verfügt über ein Bewertungsfeld, und der Wert dieses Felds gibt an, wie eine Zeile mit den zugehörigen Informationen angezeigt werden soll.

Das folgende Beispiel zeigt, wie Sie ItemContainerStyle für die ListViewItem-Objekte, die die Lieder in der Liedersammlung repräsentieren, definieren. ItemContainerStyle verweist auf ControlTemplate-Objekte, die angeben, wie eine Zeile mit Songinformationen angezeigt werden soll.

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

Das folgende Beispiel zeigt ein ControlTemplate, das die Textzeichenfolge "Strongly Recommended" der Zeile hinzufügt. Diese Vorlage wird in ItemContainerStyle referenziert und angezeigt, wenn die Bewertung des Titels den Wert 5 (fünf) hat. ControlTemplate enthält ein GridViewRowPresenter-Objekt, das den Inhalt der Zeile in den durch den GridView-Ansichtsmodus definierten Spalten anordnet.

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

Im folgenden Beispiel wird GridView definiert.

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

Weitere Informationen