共用方式為


ListView 概觀

ListView 控制項可提供基礎結構,以在不同的版面配置或檢視顯示一組資料項目。 例如,使用者可能會想在資料表中顯示資料項目,並以資料行排序。

這個主題包含下列章節。

  • 什麼是 ListView
  • 定義 ListView 的檢視模式
  • 將資料繫結至 ListView
  • 設定實作 GridView 之 ListView 的樣式
  • 共用相同檢視模式
  • 建立自訂檢視模式
  • 相關主題

什麼是 ListView

ListView 控制項是衍生自 ListBoxItemsControl。 這種控制項的項目通常是資料集合的成員,而且會以 ListViewItem 物件表示。 ListViewItem 是一種 ContentControl,只能包含單一子項目。 不過,這個子項目可以是任何視覺化項目。

定義 ListView 的檢視模式

若要指定 ListView 控制項內容的檢視模式,請設定 View 屬性。 Windows Presentation Foundation (WPF) 提供的一種檢視模式是 GridView,會在可以自訂資料行的資料表中顯示一組資料項目。

下列範例顯示如何定義 ListView 控制項的 GridView,以顯示員工資訊。


<ListView ItemsSource="{Binding Source=
                       {StaticResource EmployeeInfoDataSource}}">

  <ListView.View>

    <GridView AllowsColumnReorder="true"
              ColumnHeaderToolTip="Employee Information">

      <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=FirstName}" 
                      Header="First Name" Width="100"/>

                  <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=LastName}" 
                      Width="100">
                      <GridViewColumnHeader>Last Name
                          <GridViewColumnHeader.ContextMenu>
                          <ContextMenu  MenuItem.Click="LastNameCM_Click"  
                                        Name="LastNameCM">
                              <MenuItem Header="Ascending" />
                              <MenuItem Header="Descending" />
                          </ContextMenu>
                          </GridViewColumnHeader.ContextMenu>
                      </GridViewColumnHeader>
                  </GridViewColumn>

                  <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=EmployeeNumber}" 
                      Header="Employee No." Width="100"/>
    </GridView>

  </ListView.View>
</ListView>

下圖顯示上述範例的資料顯示出來的樣子。

ListView 與 GridView 輸出

您可以定義繼承自 ViewBase 類別的類別,以建立自訂檢視模式。 ViewBase 類別可提供建立自訂檢視所需的基礎結構。 如需如何建立自訂檢視的詳細資訊,請參閱 HOW TO:建立 ListView 的自訂檢視模式

將資料繫結至 ListView

請使用 ItemsItemsSource 屬性指定 ListView 控制項的項目。 下列範例會將 ItemsSource 屬性設為名為 EmployeeInfoDataSource 的資料集合。

<ListView ItemsSource="{Binding Source=
                       {StaticResource EmployeeInfoDataSource}}">

GridView 中,GridViewColumn 物件會繫結至指定的資料欄位。 下列範例會指定 DisplayMemberBinding 屬性的 Binding,以將 GridViewColumn 物件繫結至資料欄位。

Dim gvc1 As New GridViewColumn()
gvc1.DisplayMemberBinding = New Binding("FirstName")
gvc1.Header = "FirstName"
gvc1.Width = 100
GridViewColumn gvc1 = new GridViewColumn();
gvc1.DisplayMemberBinding = new Binding("FirstName");
gvc1.Header = "FirstName";
gvc1.Width = 100;
<GridViewColumn DisplayMemberBinding=
                    "{Binding Path=FirstName}" 
                Header="First Name" Width="100"/>

您也可以指定 Binding 做為 DataTemplate 定義的一部分,再使用定義設定資料行儲存格的樣式。 下列範例中,以 ResourceKey 識別的 DataTemplate 會設定 GridViewColumnBinding。 請注意,這個範例不會定義 DisplayMemberBinding,因為這麼做會覆寫 DataTemplate 指定的繫結。

<DataTemplate x:Key="myCellTemplateMonth">
  <DockPanel>
    <TextBlock Foreground="DarkBlue" HorizontalAlignment="Center">
      <TextBlock.Text>
        <Binding Path="Month"/>
      </TextBlock.Text>
    </TextBlock>
  </DockPanel>
</DataTemplate>
<GridViewColumn Header="Month" Width="80"
      CellTemplate="{StaticResource myCellTemplateMonth}"/>

設定實作 GridView 之 ListView 的樣式

ListView 控制項包含 ListViewItem 物件,這些物件代表顯示的資料項目。 您可以使用下列屬性定義資料項目的內容和樣式:

為避免 GridView 儲存格之間的對齊問題,請不要使用 ItemContainerStyle 設定屬性或加入會影響 ListView 中項目寬度的內容。 例如,當您在 ItemContainerStyle 中設定 Margin 屬性時,就可能會發生對齊問題。 若要指定屬性或定義會影響 GridView 中項目寬度的內容,請使用 GridView 類別及其相關類別的屬性,例如 GridViewColumn

如需如何使用 GridView 及其支援類別的詳細資訊,請參閱 GridView 概觀

如果您定義了 ListView 控制項的 ItemContainerStyle,而且也定義了 ItemTemplate,就必須將 ContentPresenter 加入樣式中,ItemTemplate 才能正常運作。

使用 GridView 顯示的 ListView 內容請不要使用 HorizontalContentAlignmentVerticalContentAlignment 屬性。 若要指定 GridView 資料行的內容對齊方式,請定義 CellTemplate

共用相同檢視模式

兩個 ListView 控制項無法同時共用相同的檢視模式。 如果有一個以上的 ListView 控制項嘗試使用相同的檢視模式,會發生例外狀況。

若要指定多個 ListView 可以同時使用的檢視模式,請使用樣板或樣式。 如需如何將檢視定義為 Resources 的範例,請參閱具有多個檢視的 ListView 範例 (英文)。

建立自訂檢視模式

自訂檢視 (如 GridView) 是衍生自 ViewBase 抽象類別,能提供工具來顯示 ListViewItem 物件所代表的資料項目。

如需自訂檢視模式的範例,請參閱具有多個檢視的 ListView 範例 (英文)。

請參閱

參考

GridView

ListView

ListViewItem

Binding

概念

GridView 概觀

最佳化效能:控制項

其他資源

ListView HOW TO 主題