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