Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

[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 Smile

 

A+

 

PS: Dans l'exemple précédent, sys est le préfixe du namespace pointant sur System Wink

 

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 :
Posted: jeudi 28 août 2008 10:04 par Thomas LEBRUN
Classé sous : ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [WF4] Passage d’arguments Literal, VisualBasicValue ou LambdaValue? par Blog de Jérémy Jeanson le il y a 5 heures et 26 minutes

- [RIA Services] Include et DomainDataSource par Blog Technique d'Audrey PETIT le il y a 16 heures et 50 minutes

- ZUNE : Version ZUNE Software V 4.2 et la socialisation par Blog Technique de Romelard Fabrice le il y a 18 heures et 15 minutes

- Pratique de Silverlight par Eric Ambrosi par Blog de Frédéric Queudret le il y a 20 heures et 22 minutes

- Apprendre à développer pour les mobiles avec la nouvelle génération .NET par Perspective le il y a 21 heures et 38 minutes

- ZUNE : Nouvelle version du ZUNE Software – V 4.2 par Blog Technique de Romelard Fabrice le il y a 22 heures et 3 minutes

- Nouveau système d'aide pour Visual Studio 2010 : pour ceux qui n'apprécient pas trop l'absence d'index... par CoqBlog le 03-20-2010, 20:05

- L'interface naturelle de Windows Phone 7 Series par Perspective le 03-20-2010, 18:49

- Comment mapper une vue SQL sur une collection de complex type? par Matthieu MEZIL le 03-19-2010, 21:05

- SQL Server : Query Notification ou comment être notifié de modifications de données côté application (SqlDependency) par SQL Server vu par Christian Robert le 03-19-2010, 15:06