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

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 50 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 2 heures et 4 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le il y a 15 heures et 43 minutes

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le il y a 16 heures et 40 minutes

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le il y a 16 heures et 55 minutes

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18