Traduction▲
Ce tutoriel est la traduction la plus fidèle possible du tutoriel original de Peter Bull, Microsoft Silverlight 4 - Basic Databinding with DataGrid in Silverlight.
Introduction▲
La liaison de données est l'une des principales fonctionnalités de Silverlight où les éléments peuvent être liés aux données, qui dans ce cas sera une collection de données pouvant être sauvegardée en utilisant l'IsolatedStorage.
La liaison de données basique avec la DataGrid en Silverlight▲
Étape 1▲
Démarrez Microsoft Visual Web Developer 2010 Express, ensuite sélectionnez Fichier puis Nouveau Projet… Sélectionnez Visual Basic ensuite Application Silverlight dans les modèles installés, sélectionnez un emplacement si vous le souhaitez, puis entrez un nom pour le projet et appuyez sur OK :
Étape 2▲
Une nouvelle fenêtre Nouvelle application Silverlight devrait apparaître, décochez la case Héberger l'application Silverlight sur un nouveau site Web, puis sélectionnez la Version de Silverlight ciblée :
Étape 3▲
Une page vierge nommée MainPage.xaml devrait alors apparaître :

Étape 4▲
Sélectionnez Projet ensuite Ajouter une référence… La fenêtre Ajouter une référence devrait apparaître, sélectionnez System.Xml.Linq dans la liste .NET :
Étape 5▲
Ajoutez la référence à System.Xml.Linq en cliquant sur OK.
Sélectionnez Projet puis Ajouter une classe… et sélectionnez le modèle Classe s'il ne l'est pas déjà, ensuite modifiez le Nom en Music.vb :
Étape 6▲
Ajoutez une nouvelle classe au Projet en cliquant sur Ajouter, puis dans la vue de code pour la classe Music.vb, au-dessus de la ligne Public Class Music tapez le code suivant :
Imports System.ComponentModel
Étape 7▲
Puisque nous en sommes à la vue de code pour la classe Music.vb, en dessous de la ligne Public Class Music tapez ceci :
Implements INotifyPropertyChanged
Private _album As String
Private _artist As String
Private _released As String
Private _genre As String
Public Event PropertyChanged As PropertyChangedEventHandler _
Implements INotifyPropertyChanged.PropertyChanged
Étape 8▲
Toujours dans la vue de code pour la classe Music.vb, au-dessus du End Class pour Public Class Music tapez les Sub suivants :
Private Sub NotifyPropertyChanged(ByVal PropertyName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(PropertyName))
End Sub
Public Sub New()
_album = "Untitled"
End SubÉtape 9▲
En étant toujours dans la vue de code pour la classe Music.vb, au-dessus du End Class pour Public Class Music tapez les propriétés suivantes :
Public Property Album As String
Get
Return _album
End Get
Set(ByVal value As String)
_album = value
NotifyPropertyChanged("Album")
End Set
End Property
Public Property Artist As String
Get
Return _artist
End Get
Set(ByVal value As String)
_artist = value
NotifyPropertyChanged("Artist")
End Set
End Property
Public Property Released As String
Get
Return _released
End Get
Set(ByVal value As String)
_released = value
NotifyPropertyChanged("Released")
End Set
End Property
Public Property Genre As String
Get
Return _genre
End Get
Set(ByVal value As String)
_genre = value
NotifyPropertyChanged("Genre")
End Set
End PropertyÉtape 10▲
Retournez au concepteur de vues pour MainPage en sélectionnant l'onglet MainPage.xaml. Puis dans la section Tous les contrôles Silverlight de la Boîte à outils, sélectionnez le contrôle Canvas :
Étape 11▲
Dessinez un Canvas sur la page, ensuite dans le volet XAML au-dessus de </Grid> modifiez la ligne Canvas1 comme ceci :
<Canvas Height="35" Width="400" VerticalAlignment="Top" HorizontalAlignment="Left" Name="Toolbar"></Canvas>Voir ci-dessous :

Étape 12▲
Puis dans la section Contrôles Silverlight communs de la Boîte à outils, sélectionnez le contrôle Button :
Étape 13▲
Dessinez trois boutons sur la barre d'outils du Canvas en glissant les boutons de la Boîte à outils sur le Canvas, ensuite dans le volet XAML entre les balises <Canvas> et </Canvas> modifiez les lignes <Button> comme ceci :
<Button Canvas.Left="6" Canvas.Top="6" Height="23" Width="75" Name="Add" Content="Add"/>
<Button Canvas.Left="87" Canvas.Top="6" Height="23" Width="75" Name="Remove" Content="Remove"/>
<Button Canvas.Left="168" Canvas.Top="6" Height="23" Width="75" Name="Save" Content="Save..."/>Voir ci-dessous :

Étape 14▲
Puis dans la section Contrôles Silverlight communs de la Boite à outils, sélectionnez le contrôle DataGrid :
Étape 15▲
Dessinez une DataGrid sur la page, en dessous du Canvas avec les boutons, et dans le volet XAML au-dessus de </Grid> et en dessous de </Canvas> modifiez DataGrid1 comme ceci :
<data:DataGrid Height="265" Width="400" Margin="0,35,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" ItemsSource="{Binding}" Name="Data"/>Voir ci-dessous :

Étape 16▲
Faites un clic droit sur la page ou sur l'entrée pour MainPage.xaml dans l'Explorateur de solutions et choisissez l'option Afficher le code. Dans la vue de code, au-dessus de la ligne Partial Public Class MainPage tapez le code suivant :
Imports System.Collections.ObjectModel
Imports System.IO.IsolatedStorage
Imports System.Xml.Linq
Étape 17▲
Puisque nous en sommes à la vue de code pour MainPage.xaml, en dessous de la ligne Inherits UserControl tapez ceci :
Public Filename As String = "Music.xml"
Public Property Collection As New ObservableCollection(Of Music)
Étape 18▲
En étant toujours dans la vue de code, dans le constructeur Public Sub New() en dessous de la ligne InitializeComponent() tapez ceci :
Using Storage As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication
If Storage.FileExists(Filename) Then ' Open File
Using OpenFile As New IsolatedStorageFileStream(Filename, IO.FileMode.Open, Storage)
Dim _reader As XmlReader = XmlReader.Create(OpenFile)
Dim _doc As XDocument = XDocument.Load(_reader)
Collection.Clear()
For Each Element As XElement In _doc.Root.<music>
Collection.Add(New Music With {
.Album = Element.<album>.Value,
.Artist = Element.<artist>.Value,
.Released = Element.<released>.Value,
.Genre = Element.<genre>.Value})
Next
End Using
Else ' New File
Collection.Add(New Music With {
.Album = "Tubular Bells",
.Artist = "Mike Oldfield",
.Released = "1973",
.Genre = "Prog Rock"})
End If
End Using
Data.DataContext = CollectionÉtape 19▲
Retournez au concepteur de vues en sélectionnant l'onglet MainPage.xaml, ou faites un clic droit dans l'Explorateur de solutions et choisissez l'option Concepteur de vues.
Double-cliquez sur le bouton Add et tapez ceci dans le Sub Add_Click :
Collection.Add(New Music)
Étape 20▲
Retournez au concepteur de vues en sélectionnant l'onglet MainPage.xaml, ou faites un clic droit dans l'Explorateur de solutions et choisissez l'option Concepteur de vues.
Double-cliquez sur le bouton Remove et tapez ceci dans le Sub Remove_Click :
Collection.Remove(CType(Data.SelectedItem, Music))
Étape 21▲
Retournez au concepteur de vues en sélectionnant l'onglet MainPage.xaml, ou faites un clic droit dans l'Explorateur de solutions et choisissez l'option Concepteur de vues.
Double-cliquez sur le bouton Save... et tapez ceci dans le Sub Save_Click :
Dim _doc As XDocument =
<?xml version="1.0" encoding="utf-8"?>
<collection>
<%= From Item As Music In Collection Select
<music>
<album><%= Item.Album.Trim %></album>
<artist><%= Item.Artist.Trim %></artist>
<released><%= Item.Released.Trim %></released>
<genre><%= Item.Genre.Trim %></genre>
</music>
%>
</collection>
Using Storage As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication
Using SaveFile As New IsolatedStorageFileStream(Filename, IO.FileMode.Create, Storage)
_doc.Save(SaveFile)
End Using
End UsingÉtape 22▲
Enregistrez le projet maintenant que vous avez terminé l'application Silverlight. Sélectionnez Debug ensuite Démarrer le débogage ou cliquez sur Démarrer le débogage :

Une fois que vous l'aurez fait, ce qui suit apparaîtra dans une nouvelle fenêtre du navigateur :

Étape 23▲
Cliquez sur Add ensuite cliquez sur la boîte Untitled pour saisir des données sur un nouvel album, données qui peuvent être insérées dans toutes les boîtes et qui peuvent ensuite être enregistrées :

Étape 24▲
Fermez l'application et la fenêtre du navigateur en cliquant sur le bouton Fermer
en haut à droite de la fenêtre de l'application et du navigateur Web pour Arrêter l'application.
Conclusion▲
Ceci était un exemple de liaison de données simple. Il utilise LINQ pour lire les données d'un IsolatedStorage - qui est une fonctionnalité de Silverlight. Il enregistre également les données, ceci étant accompli en utilisant la syntaxe XML inline prise en charge dans Visual Basic. Cet exemple peut être utilisé comme base pour n'importe quelle application basée sur les données, à vous de le personnaliser !
Liens▲
Remerciements▲
Je tiens ici à remercier Peter Bull de m'avoir autorisé à traduire son tutoriel.
Je remercie tomlev pour sa relecture technique et ses propositions.
Je remercie également ClaudeLELOUP pour sa relecture orthographique et ses propositions.
















