Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het WPFDataBinding-voorbeeld demonstreert het gebruik van gegevensbinding in een WPF-client (Windows Presentation Foundation). In het voorbeeld wordt een WCF-service (Windows Communication Foundation) gebruikt die willekeurig een matrix met albums genereert om terug te keren naar de client. Elk album heeft een naam, een prijs en een lijst met albumnummers. De albumnummers hebben een naam en duur. De informatie die door de service wordt geretourneerd, wordt automatisch gebonden aan de gebruikersinterface (UI) die wordt geleverd door de WPF-client (Windows Presentation Foundation).
Opmerking
De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.
Met gegevensbinding kan een gegevensbron automatisch worden gebonden aan een gebruikersinterface. Dit vereenvoudigt het programmeermodel omdat u niet programmatisch elk UI-element hoeft bij te werken met de gegevens uit een gegevensobject of een matrix met gegevensobjecten. U kunt een object koppelen aan één UI-element of een array aan een besturingselement dat meerdere invoer accepteert, zoals een ListBox. De volgende code laat zien hoe u gegevens koppelt aan het element van de DataContext gebruikersinterface.
// Event handler executed when call is complete
void client_GetAlbumListCompleted(object sender, GetAlbumListCompletedEventArgs e)
{
// This is on the UI thread, myPanel can be accessed directly
myPanel.DataContext = e.Result;
}
In het vorige voorbeeld wordt het DataContext voor het grid indelingselement met de naam myPanel ingesteld op de gegevens die door de GetAlbumList methode worden geretourneerd. Hiermee DataContext kunnen elementen informatie overnemen van de bovenliggende elementen over de gegevensbron die wordt gebruikt voor binding, evenals andere kenmerken van de binding, zoals het pad. De coderegel moet telkens worden uitgevoerd wanneer de gegevens op de server worden bijgewerkt. Het wordt bijvoorbeeld uitgevoerd wanneer het venster wordt geïnitialiseerd en wanneer er een nieuw album wordt toegevoegd.
In de volgende XAML-voorbeeldcode specificeert de ListBox de ItemsSource="{Binding }".
<ListBox
ItemTemplate="{StaticResource AlbumStyle}"
ItemsSource="{Binding }"
IsSynchronizedWithCurrentItem="true" />
Hiermee geeft u op dat de gegevens die zijn gebonden aan het ui-element op het hoogste niveau, ook zijn gebonden aan dit besturingselement (dat wil gezegd de matrix van albums). Daarnaast specificeert ItemTemplate="{StaticResource AlbumStyle}" de gegevenssjabloon die voor elk item in het ListBox moet worden gebruikt. U kunt ook gegevenssjablonen definiëren om op te geven hoe de gegevens moeten worden opgemaakt. Deze gegevenssjablonen kunnen opnieuw worden gebruikt voor andere UI-elementen in de toepassing. Het voordeel is dat de gegevenssjabloon op één plaats wordt gedefinieerd en onderhouden.
De AlbumStyle gegevenssjabloon legt een raster vast met twee TextBlocks naast elkaar. De ene geeft de naam van het album en het andere nummer van tracks in het album op.
<DataTemplate x:Key="AlbumStyle">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="260" />
<ColumnDefinition Width="60" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" TextContent="{Binding Path=Title}" />
<TextBlock Grid.Column="1" TextContent="{Binding Path=Tracks#.Count}" HorizontalAlignment="Right" />
</Grid>
</DataTemplate>
Met de volgende XAML-code wordt een tweede ListBoxgemaakt.
<ListBox Grid.Row="2"
Grid.ColumnSpan="2"
ItemTemplate="{StaticResource TrackStyle}"
ItemsSource="{Binding Path=Tracks}" />
De code geeft een pad voor de ItemsSource. Dit geeft aan dat de gegevens die aan dit besturingselement zijn gebonden, niet de gegevens op het hoogste niveau zijn, maar een eigenschap van de gegevens op het hoogste niveau met de naam Tracks. Deze eigenschap vertegenwoordigt de reeks van nummers op het album. Daarnaast wordt een andere DataTemplate genaamd TrackStyle opgegeven. De indeling van de TrackStyle sjabloon is vergelijkbaar met die van de AlbumStyle sjabloon, maar de TextBlocks zijn gebonden aan verschillende eigenschappen. Dit komt doordat de twee sjablonen worden gebruikt met verschillende gegevensobjecten.
Het voorbeeld instellen, compileren en uitvoeren
Zorg ervoor dat u de One-Time Setup Procedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.
Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in Het bouwen van de Windows Communication Foundation-voorbeelden.
Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Windows Communication Foundation-voorbeelden uitvoeren.