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 :

Récupérer valeur sélectionnée d'un ComboBox


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 22
    Points : 20
    Points
    20
    Par défaut Récupérer valeur sélectionnée d'un ComboBox
    Salut!

    Je suis en train de développer une appli WPF avec Visual Studio. Cette appli communique avec une Base de données dans la quelle il y a des dates.
    Plutôt que d'utiliser un ComboBox je préférerais utiliser un DatePicker, mais je voudrais que l'utilisateur ne puisse choisir que les dates présentent dans la base de données.

    J'ai essayé en passant par le DataContext (en lui attribuant une List<DateTime> ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    List<DateTime> Dates = new List<DateTime>();
                DateTime newDate = new DateTime(1994, 12, 21, 11, 23, 32);
                Dates.Add(newDate);
     
                //DatePicker
                this.Date.DataContext = Dates;
    Y a-t-il un moyen de rendre clickable seulement quelques dates??

    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 80
    Points : 163
    Points
    163
    Par défaut
    Je ne sais pas si cela est possible. Par contre, tu peux chopper l’événement lors du clic et contrôler que la date cliquée est 'autorisée' et faire en conséquence ou ne rien faire d'ailleurs.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Merci pour ta réponse. Entre temps j'ai essayer de passer par un combobox du coup^^.
    Merci quand même!


    Par contre je bloque un peu!
    En fait je reçois une liste de date en XML que je deserialize, nickel, et chaque date je les insert dans le Combobox.

    Le problème c'est qu'ensuite j'ai besoin de la valeur sélectionnée, donc la date contenu, et c'est la que je bloque, quand je veux la récupérer il me retourne la valeur null.

    P.S: tout ce code ce passe dans le constructeur d'un fenetre XAML. A la fin du constructeur l'IHM s'affiche bien, et le combobox est bien remplie. Aucune exception n'es levée.
    Le seul moyen que j'ai trouver c'est de remplir a la fois le DataContext et l'ItemSource (ligne 24 et 25)


    voilà mon code (j'ai enlever ce qui vous servira à rien ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    /*
                 * Un objet HTTPClient execute une requête pour récupérer les dates
                 * depuis une base de données et si elle est réussie le code continu: 
                 */
     
                string chaineXML = CodeReponse.Content.ReadAsStringAsync().Result; //contient la chaine XML recupere
     
                //Deserialize la chaine XML en objet Appareils dans listeAppareil
                Runs Runs;
     
                using (TextReader reader = new StringReader(chaineXML))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(Runs));
                    Runs = serializer.Deserialize(reader) as Runs;
                }
     
                List<string> Dates = new List<string>();
                foreach (Run run in Runs.Run)   /*Runs contient une liste de Run                                            
                                                 *chaque run contient une date
                                                 */
                { Dates.Add(run.Date); }    //run.Date: une date récupérer du serveur
     
                    //Remplis les champs de la fenêtre
                    this.runDate.ItemsSource = runDate;       //this.runData -> combobox
                    this.runDate.DataContext = runDate;        
                    this.runDate.SelectedIndex = runDate.Count - 1; //Definit le dernier objet comme celui par défaut
     
     
                //C'est là que j'ai besoin de la valeur (date de format ANNEE-MOIS-JOUR HEURE:MINUTES:SECONDES) selectionnée dans la ComboBox précédente
                this.urlRequest = this.urlBase + "recupDatasJointure.xml.php/Entete/Run/Date/" + this.runDate.SelectedItem + "/";


    code XAML du ComboBox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox x:Name="runDate" ItemsSource="{Binding}" HorizontalAlignment="Left" Margin="50,10,0,0" VerticalAlignment="Top" Width="110"/>


    voila les classe Runs et Run:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [XmlRoot(ElementName = "Run")]
        public class Run
        {
            [XmlAttribute(AttributeName = "Date")]
            public string Date { get; set; }
        }
     
        [XmlRoot(ElementName = "Runs")]
        public class Runs
        {
            [XmlElement(ElementName = "Run")]
            public List<Run> Run { get; set; }
        }


    Merci d'avance!

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 80
    Points : 163
    Points
    163
    Par défaut
    j'ai raté un épisode où dans le code donné, tu remplis les items de la combo avec la combo 'runDates'?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     this.runDate.ItemsSource = runDate;
    Alors que tu devrais y mettre la liste 'Dates'.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Oui effectivement c'etait assez débile -_- désolé.

    Du coup j'ai avancé un peu, mais j'ai un problème de gestion d'événement.

    Dans une fonction appelé RecupEntetes qui récupère des données dans la base j'ai cette ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.stepNom.SelectedIndex = stepNom.Count - 1;
    this.stepNom est un ComboBox de la fenetre, et j'ai définit que son événement SelectionChanged appelle une fonction nommée RecupDatas.

    Peut-on m'expliqué pourquoi la toute première fois que je lance mon IHM la ligne appelle automatiquement RecupDatas, et plus après??
    Je pense que c'est normal que la fonction soit appelée automatiquement car la ligne définit l'index sélectionné comme étant le dernier qu'il contient, --> événement de changement de la valeur sélectionner, mais si je rappelle cette fonction un peu plus tard, cette ligne ne l'appelle plus, pourquoi?? =o

    Merci d'avance :3

  6. #6
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour


    événement de changement de la valeur sélectionner,
    La 1ere fois ,l'index par defaut du combo est mis :
    -mis à -1(event de changment)
    Au chargement de l'IHM il est mis par tes soins:
    -
    stepNom.Count - 1 (event de changment)

    Par la suite il ne change pas de valeur donc pas d'event ,morbleu ,puisque tu l'as fige ....
    bon code ...

  7. #7
    Membre expérimenté
    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
    Points : 1 313
    Points
    1 313
    Par défaut
    tu veux pas tout faire en mvvm ???
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

Discussions similaires

  1. Rechercher une liste de dates
    Par Tiroy dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/02/2007, 15h56
  2. enable une liste deroulante
    Par 18Marie dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/08/2006, 18h54
  3. activer/désactiver une liste déroulante + date calendrier
    Par toome dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/01/2006, 15h56
  4. activer/désactiver une liste déroulante + date calendrier
    Par toome dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 03/01/2006, 14h55
  5. Réponses: 7
    Dernier message: 06/12/2005, 19h32

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