IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

ItemsControl et IItemContainerGenerator


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Par défaut ItemsControl et IItemContainerGenerator
    Bonjour,
    si j'ai bien compris ITemContainerGenerator permet d'assurer le lien via l'interface IItemContainerGenerator entre l'itemControl et les éléments qu 'il affiche.
    Mais comment cela fonctionne dans les faits je n'ai trouvé à ce jour aucune description du fonctionnement
    Je suppose qu'il doit exister un "service" qui assure cette liaison et si oui comment il fonctionne ?

    Par avance meric

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    En bref, le ItemContainerGenerator se charge de créer les éléments visuels (UIElement) qui représentent chaque élément de la source de données. Selon le type d'ItemsControl, ça peut être un ListBoxItem, ComboBoxItem, etc. On peut aussi utiliser le ItemContainerGenerator pour récupérer l'élément visuel à partir d'un élément de la liste (ContainerFromItem) ou le contraire (ItemFromContainer). Le ItemContainerGenerator gère aussi la virtualisation, entre autres (le fait de ne créer des containers que pour les éléments effectivement visibles, pour améliorer les performances)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Par défaut
    Peux-tu être plus précis sur mécanisme
    Par exemple je crée un controle personnel qui hérite de Itemscontrol
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class myControl : Itemscontrol
    {
     
     
    }
    A ce contrôle je désire ajouter un objet tel que par exemple une date
    comment va fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       private void button1_Click(object sender, RoutedEventArgs e)
            {
                myControl Tem = new myControl();
                DateTime dateTime1 = new DateTime(2004, 3, 4, 13, 6, 55);
                Tem.Items.Add(dateTime1);
            }
    comment fonctionne IsItemItsOwnContainerOverride()
    comment est traité l'objet dateTime1 quel type de container sera créé

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    En gros :
    - IsItemItsOwnContainerOverride est appelé avec ton objet DateTime en paramètre. L'implémentation par défaut dans ItemsControl renvoie true si l'objet est un ContentPresenter, ce qui n'est pas le cas ici => false.
    - GetContainerForItemOverride est appelé pour obtenir un container pour l'item. Pour ItemsControl, ça renvoie un ContentPresenter. Les classes dérivées comme ListBox ou ComboBox renvoient respectivement un ListBoxItem ou ComboBoxItem
    - Ton objet DateTime est utilisé comme DataContext du container
    - et c'est le ItemContainerGenerator qui pilote tout ça, et qui gère le lien entre les objets de données et les container

Discussions similaires

  1. [WPF] Gestion du parent logique d'un item dans un ItemsControl
    Par Taenad dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 15/12/2017, 01h02
  2. [Xaml] Lier un Itemscontrol à une StringCollection définie dans les user settings
    Par FRED.G dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 07/03/2009, 11h33
  3. [WPF] Problème de WrapPanel dans un ItemsControl
    Par Asarnil dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 03/03/2009, 09h03
  4. Créer son propre ItemsControl
    Par PerpetualSnow dans le forum Silverlight
    Réponses: 4
    Dernier message: 27/02/2009, 08h25
  5. WPF; ItemsControl ; Autosize
    Par Kapitteli dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 12/07/2007, 23h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo