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 :

ListView/TV sur collection de string, impossible de modifier


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 62
    Par défaut ListView/TV sur collection de string, impossible de modifier
    Bonjour,

    J'ai actuellement un petit souci avec les composants qui affichent des listes (ListView ou TreeView)
    Si mon ItemsSource est un ObservableCollection<string>, il m'est impossible de modifier les string de cette collection, aucune modification n'est renvoyé à la collection.

    J'ai essayé ceci (Items est la collection de string de mon Datacontext)
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ListView Name="lvAttr" ItemsSource="{Binding Items}">
        <ListView.ItemTemplate>
    	<DataTemplate>
    	    <TextBox Text="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
    	</DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <TreeView ItemsSource="{Binding Items}">
        <TreeView.Resources>
    	<DataTemplate DataType="{x:Type system:String}">
    	    <TextBox Text="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
    	</DataTemplate>
        </TreeView.Resources>
    </TreeView>

    J'ai également essayé un binding sur SelectedItem ou SelectedValue de ListView, idem, aucune modif n'est renvoyé

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <ListView Name="lvAttr" ItemsSource="{Binding Items}" />
    <TextBox Text="{Binding ElementName=lvAttr, Path=SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />


    Alors, j'ai pu me faire une mini classe qui a une propriété qui pointe vers ma string, et là ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class TestValue
    {
    	private int index;
    	private ObservableCollection<string> tp;
    	public TestValue(int v, ObservableCollection<string> col) { index = v; tp = col; }
    	public string Get {
    	    get { return tp[index]; }
    	    set { tp[index] = value; }
    	}
    }
    mais j'aurais souhaité garder des listes de strings.

    Donc, fais-je quelque chose de mal, ou autre ?

    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    j'ai pas verifie ton code mais tu peux ajouter un tostring qui renverait sur la console les string contenue pour voir ? dans ta classe
    apres le mieux serait de syncrohoniser les element sur le collectionview source
    comme ca tu change bien les bon elements

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 62
    Par défaut
    Citation Envoyé par ikeas Voir le message
    j'ai pas verifie ton code mais tu peux ajouter un tostring qui renverait sur la console les string contenue pour voir ? dans ta classe
    apres le mieux serait de syncrohoniser les element sur le collectionview source
    comme ca tu change bien les bon elements
    Sur ma collection, je suis abonné au "collectionchanged", et à côté, j'ai un bouton pour ajouter des éléments, donc je vois bien et confirme que les string ne sont pas modifiés, car l'évènement n'est appelé que quand j'ajoute, et les éléments sont tous non modifiés.
    Egalement, même en activant les NotifyOnTargetUpdated/NotifyOnTargetUpdated, aucun de ces évènements n'est appelé lorsque je modifie le string affiché :/
    Mais je pense que ca doit venir tout bêtement du fait que ce ne sont pas des propriétés.

    Je trouve ça quand même dommage de devoir passer par une classe avec propriété juste pour ça.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    tu peux fair un projet exemple que je regarde
    en fait c'est normal par ce que justement l'objet est une string
    essay de faire le test en mettant un objet qui contient une string ca devrais marcher mieux

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Citation Envoyé par ikeas
    en fait c'est normal par ce que justement l'objet est une string
    +1



    Citation Envoyé par ikeas
    essay de faire le test en mettant un objet qui contient une string ca devrais marcher mieux
    Ça il l'a testé et remarqué si j'ai bien compris
    Citation Envoyé par Spazou
    Je trouve ça quand même dommage de devoir passer par une classe avec propriété juste pour ça.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 203

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

Discussions similaires

  1. ORA-00932 Replace sur un champ Long impossible ?
    Par Phénélas dans le forum Oracle
    Réponses: 5
    Dernier message: 16/01/2007, 11h53
  2. Listview trié sur plus d'une colonne
    Par Duan dans le forum Delphi
    Réponses: 2
    Dernier message: 26/05/2006, 03h29
  3. Question facile sur la classe string
    Par MarOne dans le forum Langage
    Réponses: 9
    Dernier message: 20/04/2006, 14h28
  4. [VB6][ListView] Tri sur chaque colonne
    Par frlap dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 26/05/2004, 11h20

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