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

C# Discussion :

problème binding xaml


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Points : 28
    Points
    28
    Par défaut problème binding xaml
    Bonjour,
    j'ai un slider et un label, et je voudrais que le contenu du label dépende de la valeur du slider. Pour cela j'ai une classe C# qui prend la valeur du slider en entrée et qui retourne une chaine de caractères en fonction.
    J'ai donc pensé à binder mon slider sur ma classe C# en OneWayToSource et en PropertyChanged, pour que la classe s'actualise dès que l'on touche à la slider, et à binder mon label sur ma classe en OneWay. Mais ça ne marche pas. Avec un MessageBox, j'ai la confirmation que la classe est actualisée à chaque fois que je touche au slider. Par contre j'ai l'impression que le label ne sait pas qu'il doit appeler la méthode de la classe dès que la valeur du slider est modifiée...
    En cherchant un peu j'ai cru comprendre qu'il fallait utiliser une fonction "UpdateSource" mais je ne sais pas comment l'utiliser en pratique...
    Merci

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Pas besoin de passer par une classe C#, tu peux tout faire en XAML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <Label Content="{Binding ElementName=MySlider, Path=Value}" />
    <Slider x:Name="MySlider" />

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Oui je sais mais en fait je voulais mettre en forme le label. Plus précisément je voulais arrondir la valeur du slider, qui est un double, à 2 décimales, et ajouter une chaine de caractères après (pour afficher par exemple "31,47 m"), et j'avais donc pensé effectuer ce traitement en C#. Peut-on faire ça en Xaml?
    Et si on a vraiment besoin d'effectuer des traitements plus complexes en direct lorsqu'on change la valeur du slider, quelle est la réponse à ma question initiale?
    Merci

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par cyberchand
    Peut-on faire ça en Xaml?
    Non, effectivement, il va te falloir du code C# ou VB.NET

    Et si on a vraiment besoin d'effectuer des traitements plus complexes en direct lorsqu'on change la valeur du slider, quelle est la réponse à ma question initiale?
    Merci
    C'est quoi ta question ? Sinon, sur le slider, tu as un evenement qui doit s'appeller ValueChanged: tu pourras faire des actions à chaque changement de valeur du slider

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Je vais préciser ma question. Je veux que l'utilisateur puisse sélectionner sa taille à l'aide d'un slider, et que, lorsque la valeur du slider change, la taille s'affiche en direct dans le Label, de la forme "1.78 m", avec donc un arrondi à 2 décimales, et un " m" après le chiffre.
    J'ai donc une classe C# appelée Personne :

    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
    public class Personne
        {
            private double Taille = 1.80;
     
            // Taille
            public string sTaille
            {
                get
                {
                    return Taille.ToString(); // Ici il faudrait mettre le code qui va bien pour effectuer l'arrondi et ajouter " m" à la fin, mais ce n'est pas ce point qui me pose problème
                }
                set
                {
                    Taille = Double.Parse(value);
                }
            }
            public double dTaille
            {
                get
                {
                    return Taille;
                }
                set
                {
                    Taille = value;
                }
            }
    (je précise que c'est mon premier programme Xaml donc j'accepte toute critique sans problème )
    J'ai donc deux propriétés, dTaille et sTaille, qui permettent de manipuler respectivement la taille en tant que double et en tant que string.

    Donc, mon slider est bindé à dTaille, et mon label à sTaille. Lorsque je bouge le slider, la méthode "dTaille.set" est effectivement appelée en direct. Par contre, la méthode "sTaille.get" devrait être appelée à chaque changement de valeur du slider, en vue de mettre à jour le label en direct. Or ce n'est pas le cas. Comment faire?
    Merci pour votre aide

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par Thomas Lebrun
    Sinon, sur le slider, tu as un evenement qui doit s'appeller ValueChanged: tu pourras faire des actions à chaque changement de valeur du slider


  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Oui mais ça me dit pas comment actualiser par programme la valeur de la textbox.
    De toutes façons j'ai résolu mon problème bien plus facilement en utilisant des Value Converter...

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

Discussions similaires

  1. Problème Binding Image
    Par LeGoloua dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 28/01/2009, 11h39
  2. création de web services sous eclipse problème "binding"
    Par hammag dans le forum Services Web
    Réponses: 4
    Dernier message: 23/06/2008, 11h06
  3. Binding XAML : typer un SelectedItem
    Par Goj17 dans le forum Windows Presentation Foundation
    Réponses: 16
    Dernier message: 30/04/2008, 12h41
  4. [JSF & RichFaces] problème binding
    Par drim dans le forum JSF
    Réponses: 9
    Dernier message: 19/04/2008, 13h24
  5. [2.2.0] Problème binding de Dataset sous spagoBI
    Par lazarel dans le forum BIRT
    Réponses: 3
    Dernier message: 17/10/2007, 22h07

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