資料處理概觀

本頁適用於 WPF 和 Silverlight 2

資料是所有使用者介面的核心。從旅館訂房到股市看盤軟體,每種使用者介面皆會針對某種形式的資料,提供一種視覺化與互動的方式。如何選擇所要使用的使用者介面元件,以及如何加以放置以提供有用的工作流程,大部分是取決於您所要使用的資料本質。

資料來源

您的應用程式可能只需要使用內部資料來源,也可能會對使用者輸入表單中的部分數字進行運算。至於您所建立的其他應用程式,可能需要存取外部資料來源 (如含有資訊的資料庫、Web 摘要、Web 服務或本機檔案)。而且在某些情況下,應用程式可能會需要存取內部與外部資料來源。Microsoft Expression Blend 目前支援兩種外部資料來源類型:XML 與 CLR 物件。

  • XML 資料來源   可以用 XML 格式,將資料提供給應用程式的本機或遠端 XML 檔案。您可以使用已新增至專案的 XML 檔案,也可以將資料來源設為某個網站上 XML 檔案的 URL。

    Cc295161.alert_note(zh-tw,Expression.10).gif注意事項:

    Silverlight 2 不支援 XML 資料來源。不過,您可以在 MSDN在 Silverlight 中剖析 XML 資料下找到關於使用 XML 資料的資訊。

  • Common Language Runtime (CLR) 物件資料來源   其為一物件,含有可以繫結至目標屬性的公用屬性、子屬性及索引子。在 WPF 應用程式中,您可以使用 Microsoft .NET Framework 類別庫,將資料從資料庫轉換成 ObservableCollection。如需詳細資訊,請參閱試試看:建立 CLR 物件資料來源,或參閱 MSDN 文件庫資料繫結概觀主題 (英文)。如需 Silverlight 2 應用程式,請參閱 MSDNSilverlight 2 資料繫結 (英文)。

    Cc295161.alert_note(zh-tw,Expression.10).gif注意事項:

    Microsoft Expression Blend 不支援 CLR 物件資料來源類別,此類別包含建構函式中的參數。

在 Expression Blend 開啟的 WPF 專案中,[專案] 面板內的資料來源清單

Cc295161.108f0ba7-cf63-46a9-9512-5662579c9a3f(zh-tw,Expression.10).png

在 [專案] 面板的 [資料] 下,會列出與 Expression Blend 的使用中文件相關聯之外部資料來源。您可以使用按鈕 Cc295161.25182a96-9a69-478a-9cfe-5b360e6a9bea(zh-tw,Expression.10).png 新增及移除資料來源,也可以將資料項目 Cc295161.05fe4b1d-f584-4bd2-99b6-8bc2d735a89d(zh-tw,Expression.10).png 拖曳至畫板,以建立將資料繫結至項目的控制項。如果未設定資料來源,則 [專案] 面板中的 [資料] 只會顯示用以建立資料來源的按鈕。

Cc295161.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-tw,Expression.10).gif回到頁首

資料繫結

資料繫結是將資料來源中的項目連接到使用者介面元件 (控制項) 的程序。這表示每當資料變更時,介面元件會選擇性地反映出這些變更,反之亦然。最簡單的資料繫結範例是,內部繫結至矩形寬度的捲軸控制項。矩形會隨著捲軸的移動而放大及縮小。

Expression Blend 提供簡單且一致的方式,讓應用程式中的元素繫結至不同資料來源,以及設定可顯示並修改資料的元素。基本上,繫結建構在來源與目標之間。來源通常是某個資料來源或另一個控制項,而目標則是某個控制項。在捲軸的範例中,來源是捲軸控制項的 Value 屬性,而目標則是矩形的 Width 屬性。

您可以使用與 [屬性] 面板中的屬性相關聯之 [進階屬性選項] Cc295161.d6ba8f4a-b8a2-445a-af0b-a267dfade6e1(zh-tw,Expression.10).png 按鈕,或將項目從 [專案] 面板的 [資料] 下拖曳至畫板,建立繫結關係。(如需指示,請參閱將資料繫結至屬性或元素)。這兩種選項都會開啟 [建立資料繫結] 對話方塊,以建立控制項 (目標) 與資料欄位或其他控制項 (來源) 之間的繫結連結。

展開 [進階選項] 區段的 [建立資料繫結] 對話方塊

Cc295161.8fcdc007-d9cd-430d-81d5-29ac9b88ee31(zh-tw,Expression.10).png

[建立資料繫結] 對話方塊會呈現三個用以選取資料來源的基本選項,以及進階選項:

  • 資料欄位   此選項會呈現專案中所建立的 XML 及 CLR 物件資料來源及其相關聯欄位。您可以新增 XML 資料來源或 CLR 物件資料來源,也可以使用已建立的現有連線。若要選取要繫結的欄位,請在 [資料來源] 下選取項目,然後在 [欄位] 下選取資料項目。除非擁有可以套用的值轉換器,否則資料項目類型必須要與所繫結的屬性類型相符 (請參閱本主題後面的「進階選項」)。建立資料繫結之後,就會將資料項目填入目標的屬性值中。

  • 元素屬性   此選項可以將元素屬性繫結至相同的可延伸應用程式標記語言 (XAML) 檔案中的另一個元素屬性,這與本主題前面所提及範例中,將矩形的 Width 屬性繫結至捲軸的 Value 屬性類似。若要建立此繫結關係,請在 [屬性] 面板中找出目標屬性 (在此情況下,是矩形的 Width 屬性),並按一下 [進階屬性選項] Cc295161.d6ba8f4a-b8a2-445a-af0b-a267dfade6e1(zh-tw,Expression.10).png 按鈕,然後按一下 [資料繫結]。按一下 [元素屬性] 索引標籤,並瀏覽左窗格中的元素以找出捲軸 (來源元素),然後瀏覽右窗格中的屬性清單以找出 Value 屬性。

    Cc295161.alert_note(zh-tw,Expression.10).gif注意事項:

    Silverlight 2 不支援元素到元素的繫結。

  • 明確資料內容   此選項可讓您繫結至內容中的資料,而此內容是指定給目前的元素或它的其中一個父元素。一旦建立資料內容,所有資料繫結屬性就有共通來源的範圍,如此可簡化多個控制項之間共用資料的方式。例如,您可以將資料內容指派給含有 [ListBox] 物件及 [TextBlock] 物件的格線物件,並將這兩個物件的屬性繫結至相同內容的不同資料項目中。當您要建立主圖形/詳細資料設計時,這個功能會很有幫助;這是指如果您按一下清單中的項目 (主要窗格),會在另一個物件中顯示該項目的詳細資訊 (詳細資料窗格)。[明確資料內容] 索引標籤中的 [欄位] 窗格會列出從所繼承資料內容取得的資料連接欄位,而您可以從中選擇適合作為目標屬性的欄位。

    Cc295161.alert_note(zh-tw,Expression.10).gif注意事項:

    在上面列出的三個選項中,您可以選擇使用自訂路徑或 XML 路徑語言 (XPath) 運算式來進行資料繫結。[XPath] 會自動填入在 [欄位] 下選取的項目路徑。但是,您可以附加路徑指定來自資料來源的資料,例如識別想要的 XML 資料中的特定節點,如陳列中的項目。如需有關使用 XPath 的詳細資訊,請參閱 MSDN 文件庫XPath 語法HOW TO:使用 XMLDataProvider 與 Xpath 查詢繫結到 XML 資料主題 (英文)。

  • 進階選項   按一下底端擴充器 Cc295161.81e110f1-4068-4299-957d-0693cea95088(zh-tw,Expression.10).png 就可顯示對話方塊的進階區段,您可以在此區段中設定進階選項,例如資料流的方向 (請參閱本主題後的 [資料流])、目標屬性的預設值、值轉換器及轉換器參數。值轉換器是 .NET Framework 類別方法,用來將值從某種類型轉換為另一種類型,而且在來源及目標屬性的類型不符時是必要項目。您可以按一下值轉換器方塊旁邊的 "..." 按鈕,然後從 [新增值轉換器] 對話方塊中選擇值轉換器,以新增值轉換器。您也可以指定轉換器參數 (例如,將 double 轉換為 decimal,則可能需要指定小數點後面要顯示的小數位數值)。如需有關值轉換器的範例,請參閱試試看:建立及套用值轉換器

Cc295161.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-tw,Expression.10).gif回到頁首

資料流

將資料流定義為資料在來源與目標之間流動的方向。如果需要使用捲軸縮放矩形,只需要建立捲軸 (來源) 到矩形 (目標) 的單向繫結關係。支援下列資料流的繫結設定:

  • 預設   與 [TwoWay] 資料流相同。

  • OneWay   來源的變更會自動更新目標,但是目標的變更則不會更新來源。

  • TwoWay   來源的變更會自動更新目標,反之亦然。

  • OneWayToSource   這是 OneWay 的反轉,而且會在目標變更後自動更新來源。在 [屬性] 面板中看不到目標屬性的特殊情況下,這個功能十分有用;該屬性不是「相依性」屬性時,就會發生這種情況。您可以利用 OneWayToSource 繫結關係,在目標上設定資料繫結。

  • OneTime   會進行從來源到目標的單次初始化,但是後續的來源變更卻不會更新目標。

若要查看進行中的資料流,請考慮使用下列含有 [Slider] 控制項 (來源) 及 [TextBox] 控制項 (目標) 的範例使用者介面:

透過繫結類型說明資料流

Cc295161.955af9ad-a12d-41c6-9106-1ec4be43d0d4(zh-tw,Expression.10).png

在上述範例說明中,繫結關係是使用下列程序設定於文字方塊 (目標) 上:

  1. 在 [屬性] 面板中,按一下 [進階屬性選項] 按鈕 Cc295161.d6ba8f4a-b8a2-445a-af0b-a267dfade6e1(zh-tw,Expression.10).png,此按鈕與 [TextBox] 的 [Text] 屬性 (在 [一般屬性] 下) 相關聯,然後按一下 [資料繫結]。

  2. 在顯示的 [建立資料繫結] 對話方塊中,於 [元素屬性] 索引標籤選取 [滑桿] 節點的 [Value] 屬性。

下表根據繫結類型,描述此範例的繫結行為:

繫結類型

結果

OneWay

移動捲軸 (來源) 會更新文字方塊 (目標)。不過,在文字方塊中輸入數字並不會移動捲軸。

TwoWay

移動捲軸 (來源) 會更新文字方塊 (目標)。此外,如果在文字方塊外部按一下滑鼠,然後在文字方塊中輸入數字,捲軸位置就會變更。

OneWayToSource

在文字方塊 (目標) 中輸入數字,然後按一下文字方塊外部,則會移動捲軸 (來源)。不過,移動捲軸並不會更新文字方塊。

OneTime

啟動應用程式時,捲軸 (來源) 的初始值會更新文字方塊 (目標)。後續的捲軸變更則不會更新文字方塊,而且在文字方塊中輸入數字完全不會更新捲軸。

Cc295161.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-tw,Expression.10).gif回到頁首

繫結至外部資料來源的方法

工作流程 1:從來源繫結至目標

建立外部資料來源之後,可以將該資料來源繫結至使用者介面控制項。有兩種方式可以達到此目標:

  • 繫結現有控制項   如果控制項已在文件中,則可以將資料節點從 [專案] 面板的 [資料] 下拖曳至控制項,然後從所出現之清單的 [繫結到現有控制項] 下,選擇控制項名稱 [將屬性繫結至控制項],以將控制項繫結至資料。

  • 建立新的控制項   或者,也可以將任何資料節點從 [專案] 面板的 [資料] 下拖曳至文件中,然後從 [選取一個控制項以代表此資料欄位] 區段下出現的清單中選擇控制項。此選項會將新的控制項插入文件中。

不論選擇繫結現有控制項或建立新的控制項,都會開啟 [建立資料繫結] 對話方塊,讓您選取想要繫結至資料來源的欄位。例如,如果您將類型為字串的資料項目拖放至 TextBox 來建立繫結關係,則可能會想要繫結至此節點的 Text 欄位 (預設為選取)。您也可以按一下對話方塊中的擴充器 Cc295161.81e110f1-4068-4299-957d-0693cea95088(zh-tw,Expression.10).png,以指定其他繫結設定。請按一下 [確定] 關閉對話方塊,並建立繫結關係。如果在設計階段就有資料可用,則所選欄位的值應該會更新控制項。如需指示,請參閱將資料繫結至屬性或元素

如果資料項目是項目的集合 (陣列),或資料項目未完全符合目標類型,則會開啟 [建立資料範本] 對話方塊,讓您可以選擇特定控制項以顯示資料。如需詳細資訊,請參閱本主題後的 [資料範本]。

工作流程 2:從目標繫結至來源

雖然前一個工作流程一律是從資料來源開始,而結束於目標控制項,但是如果您已建立控制項,而且知道想要繫結至資料來源或另一個控制項屬性的屬性,則可以反轉此程序。此工作流程在元素到元素的繫結關係中特別有用。

在 [屬性] 面板的每個屬性值編輯器旁,可以找到讓您設定 [進階屬性選項] (包括資料繫結) 的 [進階屬性選項] Cc295161.d6ba8f4a-b8a2-445a-af0b-a267dfade6e1(zh-tw,Expression.10).png 按鈕。按一下進階選項功能表上的 [資料繫結],會開啟本主題前面之「工作流程 1」中所述之相同 [建立資料繫結] 對話方塊。

Cc295161.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-tw,Expression.10).gif回到頁首

資料範本

您經常需要顯示資料來源中之項目的清單。項目名稱中的 "(Array)" 可識別包含項目清單的資料項目。如果將清單節點從 [專案] 面板的 [資料] 拖放至文件,並從選用控制項清單中選取要繫結的 [ListBox],則會出現另一個標題為 [建立資料範本] 並可讓您設計資料範本的對話方塊。將文字控制項繫結至類型為字串的資料項目時,可能也會開啟此對話方塊。

資料範本定義了您要用來呈現資料的結構及格式。例如,如果將 [ListBox] 控制項的 [ItemsSource] 欄位繫結至資料來源中的連絡節點清單,您可以使用資料範本指定要從此清單中併入的欄位,以及應該指派給每個欄位的控制項。您可以選擇以 [TextBlock] 呈現名稱、以影像呈現圖片,而以 [CheckBox] 呈現布林值欄位 (如 [IsCurrentMember])。建立資料範本,可確保連接節點中的資料會轉譯為所要的視覺格式。此範本可以更細地控制如何在控制項中顯示任意資料的方式。

Cc295161.alert_note(zh-tw,Expression.10).gif注意事項:

只有 [Content] 及 [ItemsSource] 屬性才支援資料範本。

在 [建立資料範本] 對話方塊中,您可以選擇執行下列一項:

  • 使用控制項的預設樣式。若是繫結至項目清單,則預設樣式通常會是一連串的文字方塊。如需詳細資訊,請參閱 MSDN 文件庫製作資料範本概觀 (英文)。如果控制項沒有預設範本,則此選項為停用狀態。

  • 使用專案中現有或預先定義的資料範本。若尚無控制項適用的資料範本資源,則會停用此選項。

  • 指定新資料範本與顯示欄位。此選項可讓您選擇要併入範本中的資料欄位,以及選取應該指派給每個資料欄位的控制項類型。您也可以按一下最上方項目所列控制項旁邊的下拉箭號,選擇要包裝所有欄位的容器元素類型。在下面影像所說明的範例中,如果按一下 [item] 旁之 [StackPanel] 的下拉箭號,然後選取 [Grid],則資料範本會使用 [Grid],而非使用 StackPanel 作為項目的容器。請使用箭號按鈕決定資料欄位的出現順序。若沒有即時資料繫結,請選取 [產生範例資料] 核取方塊,這樣您就可以在畫板上檢視含有範例資料的控制項,查看您是否滿意範本的外觀。

您可以使用 [預覽] 窗格,決定您是否滿意範本的外觀。

[建立資料範本] 對話方塊

Cc295161.3db4f515-c88c-40de-9596-421995421dd2(zh-tw,Expression.10).png

資料範本會以資源形式儲存。如果要修改現有資料範本,可以按一下 [資源] 面板之資料範本旁的 [編輯資源] 按鈕。Expression Blend 會進入範本編輯模式並在 [物件與時間軸] 的下方顯示範本結構。在此編輯模式中,您可以新增範本的控制項,並使用 [屬性] 面板中的資料繫結,將那些控制項的屬性繫結至資料來源的新項目中。

Cc295161.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-tw,Expression.10).gif回到頁首