[WPF] Comment, en XAML, se binder sur un élément situé à un index particulier d'une collection ?
Pour bien comprendre ce que je veux dire, regardez le code suivant:
public class Personne
{
public int Id { get; set; }
public string Nom { get; set; }
public string Prenom { get; set; }
public List<Personne> Collegues { get; set; }
}
public class PersonneCollection : ObservableCollection<Personne>
{
public PersonneCollection()
{
this.Add(
new Personne()
{
Id = 1, Nom = "LEBRUN", Prenom = "Thomas", Collegues = new List<Personne>()
{
new Personne() { Id = 1, Nom = "GATES", Prenom = "Bill" },
new Personne() { Id = 1, Nom = "BALMER", Prenom = "Steeve" },
new Personne() { Id = 1, Nom = "OZZIE", Prenom = "Ray" }
}
});
}
public Personne Myself
{
get
{
return this[0];
}
}
}
Comme vous pouvez le voir, il n'y a rien d'extraordinaire: une classe Personne, associée à une classe définissant une collection de Personne et sur laquelle on définit une propriété permettant d'accéder à l'élément 0 de la collection.
Imaginons à présent que nous souhaitions accéder, en XAML, à l'élément situé en indice numéro 2 de la propriété Collegues, qui est une collection. Pour réaliser cela, il est nécessaire d'utiliser le code suivant:
<TextBox Text="{Binding Source={StaticResource obpPersonnes}, Path=Myself.Collegues[(sys:Int32)2].Nom}"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
La partie importante à regarder est la syntaxe suivant:
Myself.Collegues[(sys:Int32)2].Nom
Il est en effet nécessaire de convertir en entier le paramètre passé pour l'indice du tableau car, par défaut, il s'agit d'une chaîne de caractères !
Bon développements à tous 
A+
PS: Dans l'exemple précédent, sys est le préfixe du namespace pointant sur System 
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :