使用絕對和動態位置進行配置

在建立應用程式的視窗時,必須決定如何在該視窗上配置控制項。 同時您也必須決定當使用者調整視窗大小時,視窗上控制項的應對行為。 這些正是絕對和動態位置的課題。

在建立應用程式的視窗時,您會設定視窗大小以及該視窗上控制項的大小。 您必須決定在內容變更時,視窗和控制項的應對行為。 例如,如果在視窗上加入標籤控制項,您可以指定當文字翻譯成其他語言時標籤的應對行為。 這些是屬於動態調整大小的課題。

配置的類型

下列三種配置類型是可以在 WPF Designer for Visual Studio 中建立的:

  • 絕對
    排列子項目的方式是指定他們相對於父項目的準確位置。 例如,在面板上排列控制項的方式,是指定控制項相對於面板的左方和上方座標。 當父項目調整大小時,子項目不會有所移動。 如需詳細資訊,請參閱 HOW TO:根據絕對位置建構配置逐步解說:根據絕對位置建構配置

  • Dynamic
    排列子項目的方式是指定他們相對於父項目該如何排列以及該如何換行。 例如,您可以排列面板上的控制項,並指定控制項要水平換行。 當父項目大小縮減時,子項目會移到下一個資料列。 當父項目大小變大時,子項目會移到上一個資料列。 如需詳細資訊,請參閱 HOW TO:建構動態配置逐步解說:建構動態配置

  • 資料驅動的動態
    您要將控制項繫結至資料。 控制項會填入資料,且資料列和資料行的樣式會自動配合資料。

可能的話,最好是使用動態配置。 動態配置是最具彈性的,並最能讓使用者掌控他們的環境。 動態配置可以讓內容配合當地語系化和其他的內容變更。 絕對配置則專門用於這些情況:精確而不變的項目位置是很重要時,或是只有單一子項目 (例如影像或圖形) 時。

注意

絕對和動態配置可以相互結合。例如,您的視窗在整體上可以具有動態配置,但視窗的一部分是使用絕對位置。

注意

設定 UseLayoutRounding 屬性,可以指定 MeasureArrange 傳遞期間計算的非整數像素值何時捨入為整數像素值。這個屬性會由子控制項繼承。

面板

WPF 提供的許多 Panel 控制項可以支援絕對和動態位置。 藉由將面板控制項加入為另一個面板控制項的子項目,即可以結合面板控制項。 您可以使用下列面板控制項,在應用程式中定位項目:

Panel

配置類型

描述

Grid

Dynamic

定義的區域可以用資料列和資料行定位子項目。

DockPanel

Dynamic

定義的區域可以將子項目排列和停駐在上、下、左或右邊緣。

WrapPanel

Dynamic

自動循序排列子項目的位置,將內容移到位於父容器邊緣的下一行。 發生的順序是從上到下或從左到右,是依據方向設為水平或垂直而決定的。

StackPanel

Dynamic

自動將子項目排列為水平或垂直方向的單一行。

UniformGrid

Dynamic

自動以資料列和資料行排列子項目。 資料列和資料行會平均分配空間。 如果項目無法配合儲存格大小,就會遭到截斷。

Canvas

絕對

定義的區域可以使用座標明確定位子項目。

控制項

WPF 提供的控制項可以支援資料驅動的動態位置。 這些控制項可以繫結到資料,並會配合資料自動調整大小。 您可以使用下列控制項,在應用程式中動態顯示資料:

控制項

配置類型

描述

ListView

資料驅動的動態

顯示資料項目清單。

GridView

資料驅動的動態

為清單檢視控制項,以資料行顯示資料項目。

動態調整大小

在動態調整大小中,您將控制項設定成配合其內容而自動展開或收縮。 例如,如果將標籤控制項的大小設成配合某一語言的文字,而當文字翻譯成其他語言時,您可以將標籤設成配合新文字而自動調整大小。 動態位置支援動態調整大小的方式,是藉由在大小變更時自動調整控制項的位置。

您可以設定下列有助於建立動態配置的屬性:

屬性

適用於

備註

Width

double、Auto、*

視窗、控制項、方格資料行。

使用 Auto 和星號大小以得到最大彈性。 如需詳細資訊,請參閱下一章節。 * 僅適用於方格資料行。

Height

double、Auto、*

視窗、控制項、方格資料列。

使用 Auto 和星號大小以得到最大彈性。 如需詳細資訊,請參閱下一章節。 * 僅適用於方格資料列。

MinWidth

double

視窗、控制項、方格資料行。

設為 0 以得到最大彈性。

MinHeight

double

視窗、控制項、方格資料列。

設為 0 以得到最大彈性。

MaxWidth

double、Infinity

視窗、控制項、方格資料行。

設為 Infinity 以得到最大彈性。

MaxHeight

double、Infinity

視窗、控制項、方格資料列。

設為 Infinity 以得到最大彈性。

ResizeMode

NoResize

CanMinimize

CanResize

CanResizeWithGrip

視窗

設為 CanResize 以得到最大彈性。 這樣可以讓使用者調整視窗大小。

SizeToContent

Manual

Width

Height

WidthAndHeight

視窗

設為 WidthAndHeight 以得到最大彈性。 這樣可以讓視窗在內容展開時自動調整大小。

自動和星號大小

使用自動大小可以讓控制項配合其內容,即使在內容大小變更時。 使用星號大小可以在方格的資料列和資料行間,依照加權比例配置可用空間。 在 Extensible Application Markup Language (XAML) 中,星號值是以 * (或 n*) 表示。 例如,方格具有 4 個資料行時,您可以設定資料行的寬度如下:

資料行 1

Auto

資料行的大小會配合其內容。

資料行 2

*

Auto 資料行計算完後,這個資料行會得到剩餘部分的寬度。 資料行 2 的寬度會是資料行 4 的一半。

資料行 3

Auto

資料行的大小會配合其內容。

資料行 4

2*

Auto 資料行計算完後,這個資料行會得到剩餘部分的寬度。 資料行 4 的寬度會是資料行 2 的兩倍。

如需詳細資訊,請參閱 Star

請參閱

概念

WPF 設計工具中的對齊方式

版面配置

WPF 和 Silverlight 設計工具概觀

其他資源

配置逐步解說