Share via


Como: Make Data Available for Binding in XAML

Este tópico discute as diferentes maneiras de tornar dados disponíveis para associação em Extensible Application Markup Language (XAML), dependendo das necessidades do seu aplicativo.

Exemplo

Se você tiver um objeto common language runtime (CLR) a que você deseja fazer associação a partir de XAML, uma maneira de disponibilizar este objeto para associação é defini-lo como um recurso e dar a ele uma x:Key. No exemplo a seguir, você tem um objeto Person com uma propriedade de sequência de caracteres denominada PersonName. O objeto Person é definido no espaço de nomes chamado 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>

Em seguida, você pode fazer associação ao objeto em XAML, conforme mostrado no exemplo a seguir.

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

Como alternativa, você pode usar a classe ObjectDataProvider, como no exemplo a seguir.

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

Você define a associação da mesma maneira:

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

Nesse exemplo específico, o resultado é o mesmo: Você possui um TextBlock com o conteúdo de texto Joe. No entanto, a classe ObjectDataProvider fornece funcionalidades como a capacidade de se associar ao resultado de um método. Você pode escolher usar a classe ObjectDataProvider se você precisar das funcionalidades que ela fornece.

No entanto, se você estiver fazendo associação a um objeto que já tenha sido criado, você precisará definir o DataContext em código, como no exemplo a seguir.

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;
}

Para ver os exemplos completos, consulte Exemplo de ligação simples e VinculParar Para um ParaDO.NET DParatParaSet exemplo.

Para acessar XML dados para o uso de vinculação a XmlDataProvider classe, consulte Como: Bind to XML Data Using an XMLDataProvider and XPath Queries. Para acessar XML dados para o uso de vinculação a ObjectDataProvider classe, consulte Como: BIND a XDocument, XElement ou LINQ para XML resultados da consulta.

Para obter informações sobre as diferentes maneiras em que você pode especificar os dados para associação, consulte Como: Especificar a Fonte de Associação. Para obter informações sobre com quais tipos de dados você pode fazer associação ou como implementar seus próprios objetos common language runtime (CLR) para associação, consulte Visão geral sobre associação de fontes.

Consulte também

Conceitos

Revisão de Associação de Dados

Outros recursos

Exemplos de ligação de dados

Data Binding How-to Topics