共用方式為


HOW TO:讓資料可於 XAML 中繫結

本主題討論依據應用程式的需求,讓資料可於Extensible Application Markup Language (XAML) 中繫結的不同方法。

範例

如果您有想要從 XAML 繫結的 common language runtime (CLR) 物件,讓物件可以繫結的一個方法是將物件定義為資源並指定 x:Key 給它。 在下列範例中,您有具有 PersonName 字串屬性的 Person 物件。 Person 物件是在名為 SDKSample 的命名空間中定義的。

<Window
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:src="clr-namespace:SDKSample"
  SizeToContent="WidthAndHeight"
  Title="Simple Data Binding Sample">

  <Window.Resources>
    <src:Person x:Key="myDataSource" PersonName="Joe"/>


...


</Window.Resources>

然後您就可以在 XAML 中繫結至這個物件,如同下列範例所示。

<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>

或者,您也可以使用 ObjectDataProvider 類別,如同下列範例。

<ObjectDataProvider x:Key="myDataSource" ObjectType="{x:Type src:Person}">
  <ObjectDataProvider.ConstructorParameters>
    <system:String>Joe</system:String>
  </ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>

定義繫結的方法一樣:

<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>

在這個特定範例中,結果是一樣的:您有具有文字內容 Joe 的 TextBlock。 但是,ObjectDataProvider 類別提供了直接繫結至方法結果等功能。 如果您需要它提供的功能,可以選擇使用 ObjectDataProvider 類別。

但是,如果您是要繫結至已建立的物件,則需要在程式碼中設定 DataContext,如同下列範例。

    Private myDataSet As DataSet

    Private Sub OnInit(ByVal sender As Object, ByVal e As EventArgs)
      Dim mdbFile As String = Path.Combine(AppDataPath, "BookData.mdb")
      Dim connString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", mdbFile)
      Dim conn As New OleDbConnection(connString)
      Dim adapter As New OleDbDataAdapter("SELECT * FROM BookTable;", conn)

      myDataSet = New DataSet()
      adapter.Fill(myDataSet, "BookTable")

      ' myListBox is a ListBox control.
      ' Set the DataContext of the ListBox to myDataSet
      myListBox.DataContext = myDataSet
    End Sub
DataSet myDataSet;

private void OnInit(object sender, EventArgs e)
{
  string mdbFile = Path.Combine(AppDataPath, "BookData.mdb");
  string connString = string.Format(
      "Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", mdbFile);
  OleDbConnection conn = new OleDbConnection(connString);
  OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM BookTable;", conn);

  myDataSet = new DataSet();
  adapter.Fill(myDataSet, "BookTable");

  // myListBox is a ListBox control.
  // Set the DataContext of the ListBox to myDataSet
  myListBox.DataContext = myDataSet;
}

若要存取 XML 資料以使用 XmlDataProvider 類別繫結,請參閱 HOW TO:使用 XMLDataProvider 和 XPath 查詢繫結至 XML 資料。 若要存取 XML 資料以使用 ObjectDataProvider 類別繫結,請參閱 HOW TO:繫結至 XML 查詢結果的 XDocument、XElement 或 LINQ

如需各種可以指定要繫結之資料的方法的詳細資訊,請參閱 HOW TO:指定繫結來源。 如需可以繫結的資料型別,或如何實作自己的 common language runtime (CLR) 物件以進行繫結的詳細資訊,請參閱繫結來源概觀

請參閱

概念

資料繫結概觀

其他資源

資料繫結 HOW TO 主題