Condividi tramite


Procedura: rendere i dati disponibili per l'associazione in XAML

In questo argomento vengono analizzate le diverse modalità in cui è possibile rendere i dati disponibili per l'associazione in Extensible Application Markup Language (XAML), in base alle esigenze dell'applicazione.

Esempio

Se si dispone di un oggetto common language runtime (CLR) a cui si desidera eseguire l'associazione da XAML, è possibile renderlo disponibile per l'associazione definendolo come risorsa e assegnando a esso una x:Key. Nell'esempio riportato di seguito, è presente un oggetto Person con una proprietà stringa denominata PersonName. L'oggetto Person è definito nello spazio dei nomi denominato 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>

Successivamente sarà possibile eseguire l'associazione all'oggetto in XAML, come illustrato nell'esempio riportato di seguito.

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

In alternativa, è possibile utilizzare la classe ObjectDataProvider, come nell'esempio riportato di seguito:

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

Definire l'associazione nello stesso modo:

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

In questo esempio, il risultato è lo stesso: si ottiene un oggetto TextBlock con il contenuto di testo Joe. Tuttavia, la classe ObjectDataProvider fornisce funzionalità come la possibilità di eseguire l'associazione al risultato di un metodo. È possibile scegliere di utilizzare la classe ObjectDataProvider nel caso siano necessarie le funzionalità da essa fornite.

Tuttavia, se si esegue l'associazione a un oggetto che è già stato creato, è necessario impostare DataContext nel codice, come nell'esempio riportato di seguito.

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

Per accedere ai dati XML per l'associazione mediante la classe XmlDataProvider, vedere Procedura: eseguire l'associazione a dati XML tramite un oggetto XMLDataProvider e query XPath. Per accedere ai dati XML per l'associazione mediante la classe ObjectDataProvider, vedere Procedura: eseguire l'associazione ai risultati di una query XDocument, XElement o LINQ to XML.

Per informazioni sulle diverse modalità con cui è possibile specificare i dati a cui si esegue l'associazione, vedere Procedura: specificare l'origine di associazione. Per informazioni sui tipi di dati a cui è possibile eseguire l'associazione o sulle modalità per implementare gli oggetti common language runtime (CLR) per l'associazione, vedere Cenni preliminari sulle origini di associazione.

Vedere anche

Concetti

Cenni preliminari sull'associazione dati

Altre risorse

Procedure relative all'associazione dati