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 :

Formulaire : plusieurs Control liés à une Collection


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Par défaut Formulaire : plusieurs Control liés à une Collection
    Bonjour

    Je souhaiterais liés plusieurs Texbox à une observableCollection
    J'utilise le pattern MVVM

    Et je ne veux pas pour chaque texbox créer dans le ViewModel la fonction get/set.

    Y-at-il un control qui permet de lié tout les control à une même collection sans devoir passer par un usercontrol svp?

    En fait, je voudrais faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    data = ObservableCollection<string>
     
    <controls itemSource="Data">
     
      <TextBox Text="{Binding Path=data1.name"/>
      <TextBox Text="{Binding Path=data1.surname"/>
     
    </controls>
    Merci


    cdt
    MickeyBond

  2. #2
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Salut,

    Le soucis c'est que tu veux pointer un objet en particulier (data1) dans ta collection.
    Ce n'est pas la peine de faire pointer un collection complète pour afficher seulement quelques valeurs de cette dernière. (c'est pas forcément le plus propre je trouve )

    A première vu dans ton exemple, tu veux afficher "nom" et "prénom" ?
    Juste pour une personne en particulier ou pour tous les membres présents dans ta collection ?

    Si c'est pour tous, passe par une listbox avec un datatemplate par exemple.
    Si c'est juste pour un, il n'y a pas d'intérêt à binder toute la collection, fais juste un get set sur l'item souhaité dans ta ViewModel.

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Par défaut
    Re Koyot

    c'est juste pour une personne.
    Je veux pouvoir ajouter une ligne à un datagrid via un formulaire qui aura à peu près 20 champ

    cela veut donc dire que je dois faire autant de get/set que de textbox pour modifier une fiche?

  4. #4
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Non tu peux le faire en manipulant un objet Person. En schématisant ça donne

    Ta classe Model contenant un objet Person
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Person 
    {
    //tu mets ici toutes tes propriétés, nom, prénom, âge, sexe, ...
    }

    Dans ta ViewModel
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    public Person MyNewPerson { get; set;}

    et dans ton xaml

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <TextBlock Text="{Binding MyNewPerson.Name.....

    Bon c'est simplifié mais l'idée est là.... Tu crée un objet Person, tu saisies ses valeur et ensuite tu l'ajoute directement dans ta collection qui est bindée sur ton Datagrid

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Par défaut
    Merci Koyot

    Mais j'ai tenté un truc sans y croire et ça fonctionne.

    Dans mon ViewModel j'aoute :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public ObservableCollection<TG_TABLE> DataTG_SP
            {
                get
                {
                    return _dataTG_SP;
                }
                set
                {
                    _dataTG_SP = value;
                    RaisePropertyChanged("DataTG_SP");
                }
            }

    collection avec une seule ligne.

    Puis dans mon fichier xaml :
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    <TextBox  Text="{Binding DataTG_SP[0].Name, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource styleErreur}" Validation.ErrorTemplate="{StaticResource TextBoxErrorTemplate}" />   
     
    <TextBox  Text="{Binding DataTG_SP[0].surName, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource styleErreur}" Validation.ErrorTemplate="{StaticResource TextBoxErrorTemplate}" />

    et ça fonctionne

    Merci de ton aide

  6. #6
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Mais dans ce cas, tu n'ajoutes pas une personne, tu en modifies une.
    Sauf si tu en rajoutes une directement dans ta collection avant de l'éditer

    Bon l'important c'est que ça marche

    bonne soirée...

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

Discussions similaires

  1. Plusieurs éléments dans une collection d'objets
    Par soso78 dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/09/2008, 17h23
  2. Formulaire avec champs liés à une requête
    Par willytito dans le forum IHM
    Réponses: 1
    Dernier message: 11/06/2007, 14h40
  3. Vérifer dans un formulaire, plusieurs champs d'une table simultanément
    Par ludovicparis dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 25/04/2007, 15h22
  4. Réponses: 10
    Dernier message: 07/04/2006, 14h47
  5. Controle dans une collection
    Par rolototo dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 07/02/2005, 14h12

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