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 :

Forcer l'évaluation d'un ItemTemplateSelector


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut Forcer l'évaluation d'un ItemTemplateSelector
    Bonjour,

    J'ai une listbox dans laquelle j'affiche des objets selon un ItemTemplateSelector.
    Cet ItemTemplateSelector utilise une propriété (que je nomme DisplayMode) de l'objet pour savoir quel DataTemplate choisir.

    J'aimerai que quand la propriété DisplayMode de l'objet change, l'ItemTemplateSelector soit à nouveau appelé pour afficher correctement l'objet. Je n'ai pas trouvé de moyen de faire une sorte de Binding entre DisplayMode et ItemTemplateSelector.

    Comment faire ?

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Si DisplayMode est une DependencyProperty, tu peux utiliser une Acllback lorsque la propriété est modifiée mais de là à rapeller la méthode SelectTemplate de ton ItemTemplateSelector, ca parait ambitieux

  3. #3
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Merci Thomas, mais non, la propriété n'est pas une une DP.

    Ma classe implémente INotifyPropertyChanged, et je m'enregistre pour être appelé, mais si j'appelle juste SelectTemplate sur l'item, j'ai l'impression que ça ne fait pas grand chose... Je suis obligé de forcer l'affectation du ContentTemplate de l'item pour que ça marche. (sauf que là, du coup, WPF me dit quand même que c'est pas top parce que à la fois les propriétés ContentTemplateSelector et ContentTemplate sont positionnées.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    BusinessObj oBO = sender asBusinessObj;
      System.Windows.UIElement oUIElement = (System.Windows.UIElement)ItemContainerGenerator.ContainerFromItem(sender);
      ContentControl oContent = oUIElement asContentControl;
      if (oContent != null)
           oContent.ContentTemplate = this.ItemTemplateSelector.SelectTemplate(oBO, null);
    J'en ai peut-être oublié un morceau ?

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161

  5. #5
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Merci !

    C'est très interessant, ça me permettra au moins de le faire complètement en XAML.
    J'esperais que ça reglerait aussi un autre problème, mais non. En fait, je dispose des éléments dans une listbox dont j'ai personnalisé le ItemsPanel. Mon problème est que quand mes éléments sont dans le bas du panel, et que je change le Template d'un élément, ce qui a pour effet d'augmenter sa hauteur, la scrollbar n'est pas recalculée. Je pensais que ça venait du code qui était joué trop tard, mais non.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/05/2012, 12h22
  2. Réponses: 6
    Dernier message: 15/11/2007, 12h31
  3. Forcer la saisie en MAJ dans un Formulaire
    Par lolos dans le forum IHM
    Réponses: 4
    Dernier message: 12/08/2003, 10h57
  4. Forcer jump short ou far
    Par Blustuff dans le forum Assembleur
    Réponses: 6
    Dernier message: 02/03/2003, 02h03
  5. Forcer l'affichage des dizaines...
    Par pataluc dans le forum Langage
    Réponses: 4
    Dernier message: 26/11/2002, 19h38

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