Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

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

Actualités

[WPF] Comment réaliser une opération Maitre/Détails avec WPF ?

Voici une demande très fréquente lorsque l'on parle de développement Windows (que ce soit WindowsForms et/ou WebForms)

Pour réaliser une opération de ce type, avec WPF (Windows Presentation Foundation), l'astuce est vraiment très simple.

Partons du principe que nous avons une ObservableCollection de Customers: chaque Customer possède une propriété, nommée Orders, qui est (elle aussi) une ObservableCollection d'Order (vous me suivez toujours jusque là ? Big Smile)

public class Customer

{

    public Customer()

    {

         this.Orders = new OrderCollection();

    }

 

    public string CustomerName { get; set; }

 

    public OrderCollection Orders { get; set; }

}

 

public class CustomerCollection : ObservableCollection<Customer> { }

 

public class Order

{

   public int OrderNo { get; set; }

}

 

public class OrderCollection : ObservableCollection<Order> { }

Ensuite, tout ce qu'il vous reste à faire, c'est de binder une ComboBox, une ListView, etc... sur votre collection de Customers: cela vous permettra d'avoir la partie "Maitre" de la relation "Maitre/Détails":

<StackPanel DataContext="{Binding Source={StaticResource Customers}}">

   <ListView ItemsSource="{Binding}" DisplayMemberPath="CustomerName" IsSynchronizedWithCurrentItem="True" />

</StackPanel>

Pour finir, il faut binder un autre contrôle, qui contiendra les informations détaillées. Attention, l'astuce ici consiste à se lier directement à la collection "enfant" de notre objet, sachant que le fait de changer d'élément dans le premier contrôle mettra à jour, grâce à la propriété IsSynchronizedWithCurrentItem = True, le deuxième contrôle:

 

<ListView ItemsSource="{Binding Orders}" DisplayMemberPath="OrderNo" />

</StackPanel>

Et le tour est joué !

Pour que vous puissiez testé par vous-même, je vous propose de télécharger une solution d'exemple, disponible ici: ListViewWithCheckBoxes.zip

 

 

A+

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 29 novembre 2007 10:55 par Thomas LEBRUN
Classé sous : ,

Commentaires

oliviersens a dit :

Bonjour,

Ca marche tres bien qd on a la sélection.

Comment on fait lorsqu'on binde la collection "maitre" non pas à une listview (ou autre élément gérant la sélection) mais à un itemscontrol tout simple contenant des boutons. L'idée étant que le click d'un bouton affiche la collection "détails" qui lui est associée.

Merci!

# décembre 5, 2007 16:58
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- SQL Server 2008 : Un livre en cours de préparation ! par SQL Server vu par Christian Robert le il y a 2 heures et 42 minutes

- IIS7 : à quel pool d'application correspond le processus w3wp.exe par Atteint de JavaScriptite Aiguë [Cyril Durand] le il y a 3 heures et 39 minutes

- PDC 2008 - J-14 ! par Nix's Blog le il y a 5 heures et 24 minutes

- [Silverlight] La version finale de Silverlight 2 sera disponible en téléchargement demain ! par Thomas Lebrun le il y a 7 heures et 17 minutes

- SharePoint 2007 : Professional Developers Conference 2008 par Philippe Sentenac [MVP SharePoint] le il y a 13 heures et 10 minutes

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le 10-11-2008, 21:55

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35