Share via


Comment : rendre des données disponibles pour la liaison en XAML

Cette rubrique aborde les différentes manières de rendre les données disponibles pour la liaison en Extensible Application Markup Language (XAML), en fonction des besoins de votre application.

Exemple

Si vous souhaitez effectuer une liaison sur un objet common language runtime (CLR) à partir de XAML, une des méthodes vous permettant de rendre cet objet disponible pour la liaison est de le définir comme une ressource et de lui attribuer une x:Key. Dans l'exemple suivant, vous avez un objet Person avec une propriété de type chaîne nommée PersonName. L'objet Person est défini dans l'espace de noms appelé 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>

Vous pouvez ensuite lier l'objet en XAML, comme illustré dans l'exemple suivant :

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

Vous pouvez également utiliser la classe ObjectDataProvider, comme dans l'exemple suivant.

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

Vous définissez la liaison de la même manière.

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

Dans cet exemple particulier, le résultat est le même : vous avez un TextBlock avec le contenu de texte Joe. Cependant, la classe ObjectDataProvider fournit une fonctionnalité telle que la possibilité d'effectuer une liaison sur le résultat d'une méthode. Vous pouvez choisir d'utiliser la classe ObjectDataProvider si vous avez besoin de la fonctionnalité qu'elle fournit.

Toutefois, si vous effectuez une liaison à un objet déjà créé, vous devez définir le DataContext dans le code, comme dans l'exemple suivant.

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

Pour accéder aux données XML pour la liaison en utilisant la classe XmlDataProvider, consultez Comment : effectuer une liaison à des données XML à l'aide d'un XMLDataProvider et de requêtes XPath. Pour accéder aux données XML pour la liaison en utilisant la classe ObjectDataProvider, consultez Comment : effectuer une liaison avec XDocument, XElement ou LINQ pour des résultats de requête XML.

Pour plus d'informations sur les différentes manières vous permettant de spécifier les données que vous liez, consultez Comment : spécifier la source de liaison. Pour plus d'informations sur les types de données sur lesquelles vous pouvez effectuer une liaison, ou comment implémenter vos propres objets common language runtime (CLR) pour la liaison, consultez Vue d'ensemble des sources de liaison.

Voir aussi

Concepts

Vue d'ensemble de la liaison de données

Autres ressources

Rubriques "Comment" relatives aux liaisons de données