Gewusst wie: Bereitstellen von Daten, um diese in XAML zu binden
Aktualisiert: November 2007
In diesem Thema werden die unterschiedlichen Möglichkeiten zur Bereitstellung von Daten erläutert, um diese je nach den Anforderungen Ihrer Anwendung in Extensible Application Markup Language (XAML) zu binden.
Beispiel
Wenn Sie über ein common language runtime (CLR)-Objekt verfügen, zu dem Sie eine Bindung aus XAML erstellen möchten, besteht eine Möglichkeit zur Bereitstellung des Objekts darin, es als Ressource zu definieren und mit einem x:Key zu versehen. Im folgenden Beispiel wird ein Person-Objekt mit einer Zeichenfolgeneigenschaft mit dem Namen PersonName verwendet. Das Person-Objekt wird im Namespace mit dem Namen SDKSample definiert.
<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>
Wie im folgenden Beispiel gezeigt, können Sie daraufhin in XAML eine Bindung zum Objekt erstellen.
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>
Alternativ dazu können Sie, wie im folgenden Beispiel dargestellt, die ObjectDataProvider-Klasse verwenden.
<ObjectDataProvider x:Key="myDataSource" ObjectType="{x:Type src:Person}">
<ObjectDataProvider.ConstructorParameters>
<system:String>Joe</system:String>
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>
Die Bindung wird auf dieselbe Weise definiert:
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>
In diesem speziellen Beispiel wird dasselbe Ergebnis erzielt: Ein TextBlock mit dem Textinhalt Joe. Die ObjectDataProvider-Klasse verfügt jedoch über Funktionen wie die Fähigkeit, eine Bindung zum Ergebnis einer Methode zu erstellen. Wenn Sie die entsprechenden Funktionalitäten benötigen, verwenden Sie die ObjectDataProvider-Klasse.
Wenn Sie jedoch eine Bindung zu einem Objekt erstellen möchten, das bereits erstellt wurde, müssen Sie die DataContext-Eigenschaft, wie im folgenden Beispiel dargestellt, im Code festlegen.
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;
}
Die vollständigen Beispiele finden Sie unter Beispiel zu einfachen Bindungen und unter Beispiel zum Binden an ein ADO.NET-DataSet.
Informationen darüber, wie Sie mit der XmlDataProvider-Klasse auf XML-Daten für die Bindung zugreifen, finden Sie unter Gewusst wie: Binden an XML-Daten mithilfe von XMLDataProvider und XPath-Abfragen. Informationen darüber, wie Sie mit der ObjectDataProvider-Klasse auf XML-Daten für die Bindung zugreifen, finden Sie unter Gewusst wie: Binden an XDocument, XElement oder LINQ für XML-Abfrageergebnisse.
Informationen über die verschiedenen Methoden zur Angabe der Daten, die Sie binden möchten, finden Sie unter Gewusst wie: Angeben der Bindungsquelle. Wenn Sie erfahren möchten, zu welchen Datentypen Bindungen erstellt werden können oder wie Sie für die Bindung eigene common language runtime (CLR)-Objekte implementieren können, finden Sie die entsprechenden Informationen unter Übersicht über Bindungsquellen.