共用方式為


操作說明:為實作 GridView 之 ListView 中的資料列設定樣式

此範例顯示如何使用 ListViewGridView 模式,為 View 控制項中的資料列設定樣式。

範例

您可以在 ListView 控制項上設定 ItemContainerStyle,來為 ListView 控制項中的資料列設定樣式。 為項目所設定的樣式,會以 ListViewItem 物件表示。 ItemContainerStyle 會參考用來顯示資料列內容的 ControlTemplate 物件。

完整範例 (即下述範例的擷取來源) 顯示儲存在 XML 資料庫中歌曲資訊的集合。 資料庫中的每一首歌都有一個評等欄位,而此欄位的值會指定歌曲資訊資料列的顯示方式。

下列範例顯示如何為代表歌曲集合中歌曲的 ItemContainerStyle 物件定義 ListViewItemItemContainerStyle 會參考 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>

另請參閱