GridView 概觀
GridView 檢視模式是控制項的其中一種 ListView 檢視模式。 類別 GridView 及其支援類別可讓您和使用者檢視資料表中通常使用按鈕做為互動式資料行標頭的專案集合。 本主題介紹 GridView 類別,並概述其用法。
什麼是 GridView 檢視?
檢 GridView 視模式會藉由將資料欄位系結至資料行,以及顯示資料行標頭來識別欄位,來顯示資料項目的清單。 預設 GridView 樣式會將按鈕實作為資料行標頭。 藉由使用資料行標頭的按鈕,您可以實作重要的使用者互動功能;例如,使用者可以按一下資料行標頭,根據特定資料行的內容來排序 GridView 資料。
注意
用於資料行行首的按鈕控制項 GridView 衍生自 ButtonBase 。
下圖顯示 GridView 內容的檢視 ListView 。
GridView 資料行是由 GridViewColumn 物件表示,可以自動調整其內容的大小。 您可以選擇性地將 明確設定 GridViewColumn 為特定的寬度。 您可以藉由拖曳資料行標頭間的移駐夾來調整資料行大小。 您也可以動態新增、移除、取代和重新排序資料行,因為這項功能內建于 GridView 。 不過, GridView 無法直接更新它顯示的資料。
下列範例示範如何定義 GridView 顯示員工資料的 。 在此範例中, ListView 將 EmployeeInfoDataSource
ItemsSource 定義為 。 系結 GridViewColumn 內容至 EmployeeInfoDataSource
資料類別的屬性定義 DisplayMemberBinding 。
<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>
下圖顯示上一個範例所建立的表格。 GridView 控制項會顯示 ItemsSource 物件中的資料:
GridView 版面配置和樣式
的資料行儲存格和資料行標頭 GridViewColumn 具有相同的寬度。 根據預設,每個資料行會依據其內容來調整其寬度。 您也可以選擇將資料行設定成固定寬度。
相關資料內容會顯示在水平資料列中。 例如,在上圖中,是將每個員工的姓氏、名字及識別碼都顯示成一組,因為它們是出現在水平資料列中。
定義及設定 GridView 中的資料行樣式
定義要顯示在 中的資料 GridViewColumn 欄位時,請使用 DisplayMemberBinding 、 CellTemplate 或 CellTemplateSelector 屬性。 屬性 DisplayMemberBinding 的優先順序高於其中一個範本屬性。
若要在 的資料行中 GridView 指定內容的對齊方式,請定義 CellTemplate 。 請勿將 HorizontalContentAlignment 和 VerticalContentAlignment 屬性用於 ListView 使用 GridView 所顯示的內容。
若要指定資料行標頭的範本和樣式屬性,請使用 GridView 、 GridViewColumn 和 GridViewColumnHeader 類別。 如需詳細資訊,請參閱 GridView 資料行標頭樣式和範本概觀。
將視覺元素新增到 GridView
若要將視覺效果專案,例如 CheckBox 和 Button 控制項新增至 GridView 檢視模式,請使用範本或樣式。
如果您明確將視覺專案定義為數據項,則它只能在 中 GridView 出現一次。 之所以會有這項限制,是因為一個元素只能有一個父代,因此在視覺化樹狀結構中只能出現一次。
設定 GridView 中資料列的樣式
GridViewRowPresenter使用 和 GridViewHeaderRowPresenter 類別來格式化和顯示 的資料 GridView 列。 如需如何在檢視模式中 GridView 設定資料列樣式的範例,請參閱 在實作 GridView 的 ListView 中設定資料列的樣式。
使用 ItemContainerStyle 時的對齊問題
若要防止資料行標頭與儲存格之間的對齊問題,請勿設定屬性或指定會影響 中 ItemContainerStyle 專案寬度的範本。 例如,請勿設定 Margin 屬性或指定 ControlTemplate ,將 加入 CheckBox 至 ItemContainerStyle 控制項上 ListView 定義的 。 請改為在定義 GridView 檢視模式的類別上,指定直接影響資料行寬度的屬性和範本。
例如,若要將 加入 CheckBox 至檢視模式中的資料 GridView 列,請將 加入 CheckBox 至 DataTemplate ,然後將 屬性設定 CellTemplate 為該 DataTemplate 。
使用者與 GridView 的互動
當您在應用程式中使用 GridView 時,使用者可以與 互動並修改 的格式 GridView 設定。 例如,使用者可以重新排列資料行、調整資料行大小、選取表格中的項目,以及捲動內容。 您也可以定義會在使用者按一下資料行標頭按鈕時回應的事件處理常式。 事件處理常式可以執行作業,例如根據資料行的內容排序 中所 GridView 顯示的資料。
下列清單將更詳細地討論用於 GridView 使用者互動的功能:
使用拖放方法來重新排列資料行。
使用者可以在資料行標頭上方按下滑鼠左鍵,然後將該資料行拖曳至新位置,以重新排序 GridView 中的資料行。 當使用者拖曳資料行標頭時,除了會顯示一條指出資料行插入位置的實心黑線之外,也會顯示該標頭的浮動版本。
如果您想要修改標頭浮動版本的預設樣式,請針對 GridViewColumnHeader 屬性設定為 Floating 時 Role 觸發的類型指定 ControlTemplate 。 如需詳細資訊,請參閱為已拖曳的 GridView 資料行標頭建立樣式。
依資料行內容調整資料行大小。
使用者可以按兩下資料行標頭右邊的移駐夾,來依資料行內容調整資料行大小。
注意
您可以將 屬性設定 Width 為
Double.NaN
,以產生相同的效果。選取資料列項目。
使用者可以在 中 GridView 選取一或多個專案。
如果您想要變更 Style 選取專案的 ,請參閱 使用觸發程式設定 ListView 中選取專案的樣式。
捲動以檢視一開始在畫面上看不到的內容。
如果 的大小 GridView 不夠大,無法顯示所有專案,則使用者可以使用控制項所提供的 ScrollViewer 捲軸水準或垂直捲動。 ScrollBar如果所有內容都以特定方向顯示,則會隱藏 。 資料行標頭不會以垂直捲軸捲動,但是會以水平方式捲動。
按一下資料行標頭按鈕來與資料行進行互動。
如果您已提供排序演算法,則當使用者按一下資料行標頭按鈕時,將可排序該資料行中顯示的資料。
您可以處理 Click 資料行標頭按鈕的事件,以提供排序演算法之類的功能。 若要處理 Click 單一資料行標頭的事件,請在 上 GridViewColumnHeader 設定 事件處理常式。 若要設定事件處理常式來處理 Click 所有資料行標頭的事件,請在 控制項上 ListView 設定 處理常式。
取得其他自訂檢視
衍生 GridView 自抽象類別的 ViewBase 類別只是類別的其中一種可能檢視模式 ListView 。 您可以藉由衍生自 類別, ViewBase 為 建立其他自訂檢視 ListView 。 如需自訂檢視模式的範例,請參閱建立 ListView 的自訂檢視模式。
支援 GridView 的類別
下列類別支援 GridView 檢視模式。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應