Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’exemple WPFDataBinding illustre l’utilisation de la liaison de données dans un client WPF (Windows Presentation Foundation). L’exemple utilise un service Windows Communication Foundation (WCF) qui génère de façon aléatoire un tableau d’albums pour revenir au client. Chaque album a un nom, un prix et une liste de pistes d’album. Les pistes d’album ont un nom et une durée. Les informations retournées par le service sont automatiquement liées à l’interface utilisateur fournie par le client WPF (Windows Presentation Foundation).
Remarque
La procédure d’installation et les instructions de génération de cet exemple se trouvent à la fin de cette rubrique.
La liaison de données permet à une source de données d’être automatiquement liée à une interface utilisateur. Cela simplifie le modèle de programmation, car il ne vous oblige pas à mettre à jour par programmation chaque élément d’interface utilisateur avec les données d’un objet de données ou d’un tableau d’objets de données. Vous pouvez lier un objet à un seul élément d’interface utilisateur ou à un tableau à un contrôle qui accepte plusieurs entrées, telles qu’un ListBox. Le code suivant montre comment lier des données à l’élément DataContext d’interface utilisateur.
// 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;
}
Dans l'exemple précédent, le DataContext de l'élément de mise en page grid nommé myPanel a pour valeur les données retournées par la méthode GetAlbumList. Les éléments DataContext permettent aux éléments d'hériter des informations de leurs parents concernant la source de données utilisée pour la liaison, ainsi que d'autres caractéristiques de la liaison, comme le chemin d'accès. La ligne de code doit être exécutée chaque fois que les données sur le serveur sont mises à jour. Par exemple, elle est exécutée lorsque la fenêtre est initialisée et lorsqu’un nouvel album est ajouté.
Dans l'exemple de code XAML suivant, le ListBox spécifie le ItemsSource="{Binding }".
<ListBox
ItemTemplate="{StaticResource AlbumStyle}"
ItemsSource="{Binding }"
IsSynchronizedWithCurrentItem="true" />
Cela spécifie que les données liées à l’élément d’interface utilisateur de niveau supérieur sont également liées à ce contrôle (autrement dit, le tableau d’albums). En outre, ItemTemplate="{StaticResource AlbumStyle}" spécifie le modèle de données à utiliser pour chaque élément du ListBox. Vous pouvez également définir des modèles de données pour spécifier la façon dont les données doivent être mises en forme. Ces modèles de données peuvent être réutilisés pour d’autres éléments d’interface utilisateur dans l’application, l’avantage est que le modèle de données est défini et conservé à un seul endroit.
Le modèle de données AlbumStyle définit une grille contenant deux TextBlock côte à côte. L’un spécifie le nom de l’album et l’autre le nombre de pistes dans l’album.
<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>
Le code XAML suivant crée une seconde ListBox.
<ListBox Grid.Row="2"
Grid.ColumnSpan="2"
ItemTemplate="{StaticResource TrackStyle}"
ItemsSource="{Binding Path=Tracks}" />
Le code spécifie un chemin d’accès pour le ItemsSource. Cela indique que les données liées à ce contrôle ne sont pas les données de niveau supérieur, mais plutôt une propriété des données de niveau supérieur nommée Tracks. Cette propriété représente le tableau de pistes contenues dans l'album. En outre, un autre DataTemplate nom TrackStyle est spécifié. La disposition du TrackStyle modèle est similaire à celle du AlbumStyle modèle, mais les TextBlocks sont liés à différentes propriétés. Cela est dû au fait que les deux modèles sont utilisés avec des objets de données différents.
Pour configurer, générer et exécuter l’exemple
Assurez-vous d’avoir effectué la Procédure d’installation unique pour les exemples Windows Communication Foundation.
Pour générer l’édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans Building the Windows Communication Foundation Samples.
Pour exécuter l’exemple dans une configuration à un ou plusieurs ordinateurs, conformez-vous aux instructions figurant dans la rubrique Exécution des exemples Windows Communication Foundation.