Практическое руководство. Обеспечение доступности данных для привязки в XAML

В этом разделе обсуждаются различные способы, позволяющие сделать данные доступными для привязки в Extensible Application Markup Language (XAML), в зависимости от потребностей приложения.

Пример

Если требуется осуществить привязку к объекту common language runtime (CLR) из XAML, одним из способов сделать этот объект доступным для привязки является определение его в качестве ресурса и присвоения ему атрибута x:Key. В следующем примере имеется объект Person со строковым свойством PersonName. Объект 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}"/>

В этом конкретном примере получен тот же результат: TextBlock с текстовым содержимым Joe. Однако класс 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 см. в разделе Практическое руководство. Привязка к данным xml с помощью XMLDataProvider и запросов XPath. Сведения о доступе к данным XML для привязки с помощью класса ObjectDataProvider см. в разделе Практическое руководство. Привязка к XDocument, XElement или LINQ для результатов запросов XML.

Сведения о различных способах указания данных, к которым осуществляется привязка, см. в разделе Практическое руководство. Указание источника привязки. Сведения о том, к каким типам данных можно осуществить привязку, или как реализовать собственные объекты common language runtime (CLR) для привязки, см. в разделе Общие сведения об источниках привязки.

См. также

Основные понятия

Общие сведения о связывании данных

Другие ресурсы

Практические руководства по привязке данных