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, selectedvalue, mvvm et problèmes


Sujet :

Windows Presentation Foundation

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 49
    Points : 28
    Points
    28
    Par défaut listview, selectedvalue, mvvm et problèmes
    bonjour

    j'ai un problème...

    j'ai une listview bindée à une datatable
    ma selectedvalue est de type datarow
    mon selecteditem est de type datarowview

    la selectedvalue est définie dans le xaml en twoway avec l'updatesourcetrigger en propertychanged, sachant que la propriété du modèle sur laquelle elle est "bindée" implémente le OnpropertyChanged

    cependant, quand je sélectionne la ligne, la propriété du modèle est bien définie, mais que je définis la propriété dans le modèle, la ligne correspondante n'est pas sélectionnée....

    Y a un truc que j'ai loupé ?

    Merci

  2. #2
    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
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Ça semble correct dans la façon de faire. Est-ce que tu peux mettre ton code (propriété + code xaml) ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Oui voila le code

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            <ListView
                      Name="ListView" 
                      SelectionMode="Single"
                      SelectedValue="{Binding Path=CurrentItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                      SelectedValuePath="Row"                      
                      ItemsSource="{Binding Path=MyDataTable}" 
                      >
            </ListView>

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    		private DataRow _currentItem;
     
    		public DataRow CurrentItem {
    			get {
    				return _currentItem;
    			}
    			set {
    				if(value != _currentItem) {
    					_currentItem = value;
    					OnPropertyChanged("CurrentItem");
    				}
    			}
    		}

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    bonjour

    j'oubliais le cas d'utilisation qui je pense est le problème

    ma listview fait partie d'une vue maître détails

    quand je sélectionne une ligne, j'ai un formulaire rempli avec les données correspondantes.

    si je modifie l'une des données et que je sélectionne une nouvelle ligne sans sauver, un message modal apparaît (la ligne originale perd le focus, la nouvelle ne l'a pas encore) demandant si je souhaite sauver d'abord avant de continuer. Dans ce cas là, si je clique sur "annuler", la ligne originale doit être sélectionnée (à donc le focus) or ce n'est pas le cas (la propriété est correcte)

    le seul moyen que j'ai trouvé c'est de mettre à jour le binding sur "selectedvalue" de manière explicite en gérant l'évènement "selectionchanged"
    en faisant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lv.GetBindingExpression(ListView.SelectedValueProperty).UpdateTarget();
    Il semblerait que la fenêtre modale casse le truc et l'OnpropertyChanged est court circuité

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/07/2011, 08h32
  2. [MVVM][XAML] Problème de Selection d'une liste
    Par Monkey56 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 24/09/2010, 13h25
  3. [ListView] Comment résoudre un problème de Binding/Multibinding rafraichissement ?
    Par Lookoum dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 26/09/2008, 09h27
  4. [C#]Virtual ListView (CLR 2.0) - problème MouseOver
    Par fdebuiss dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/09/2006, 08h25
  5. [C#] Problème avec ListView
    Par yannick dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/06/2004, 17h29

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