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 :

MVVM - Binding TextBox avec Float [Débutant(e)]


Sujet :

Windows Presentation Foundation

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 35
    Points
    35
    Par défaut MVVM - Binding TextBox avec Float
    Bonjour à tous,

    Après avoir effectué de multiples recherches, je n'arrive pas à trouver solution à mon problème... Je vous explique :

    Voici le modèle :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Personne : INotifyPropertyChanged
    {
      public float Taille
      {
        get { return _taille; }
        set{_taille = value;}
      }
    }

    Et voici la TextBox lié à la propriété Taille de ce modèle:
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <TextBox Text="{Binding Path=Nourisson.Taille, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:F1}}"/>

    Je voudrais simplement que, même si la valeur entrée dans la textbox ne soit pas de type float, la valeur de Taille dans ma classe Personne soit quand même modifiée (je sais que cela générera une exception dans mon setter). Car pour l'instant, tant que je n'écrit pas autre chose qu'un nombre dans ma textbox, la valeur de Taille n'est pas modifiée dans le code behind (j'ai mis un point d'arrêt sur le setter pour vérifier).

    Pour info : j'ai tenter de rajouter dans le Binding
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NotifyOnValidationError=True, ValidatesOnExceptions=True, ValidatesOnDataErrors=True
    mais je n'ai pas plus de résultats...

    Je vous remercie énormément.

  2. #2
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    En enlevant ton StringFormat {0:F1} de ta textbox ça ne marche pas ?

    J'ai du mal à comprendre ce que tu cherches à faire...
    Pourquoi ne pas faire un String tout simplement, si tu veux pouvoir saisir un peu tout ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    Bonjour Er3van,

    Je voulais tout simplement conservé le typage fort de la propriété Taille (c'est pourquoi je n'ai pas chosit le type String).
    De plus, WPF offre des avantages graphiques avec un Binding de typage fort : Il fait un encadrement rouge et modifie la propriété Validation (si je ne me trompe pas ).

    Je viens d'enlever le StringFormat mais c'est toujours la même chose.

    En fait, je voudrait simplement gérer l'exception :
    Si la textbox ne contient pas un float, un control est mis en disable et un message s'affiche.

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

    Si tu utilises la NotifyOnValidationError il te faut définir ta règle de validation.
    Voici deux exemples en lien :
    lien 1
    lien 2

    Bon courage

    @+

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    Bonjour koyot3,

    Je pensais justement me dispenser de règles de validation en utilisant le typage fort... (En effet, on voit clairement le moment où WPF reconnait un float d'un non float dans la textbox).

    N'y a-t-il aucun moyen de récupérer une sorte d'exception ou un paramètre signalant que la textbox ne contient pas ce qu'elle devrait contenir ?

    Merci de ton aide en tout cas .

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Tu peux essayer d'utiliser un IValueConverter dans ton binding.

Discussions similaires

  1. Binding window avec pattern MVVM
    Par Invité dans le forum Développement Windows
    Réponses: 1
    Dernier message: 01/03/2013, 10h54
  2. Bug composant TextBox avec Vista (Binding/Scrollbar)
    Par Anified dans le forum Windows Forms
    Réponses: 6
    Dernier message: 27/05/2008, 16h04
  3. binding Textbox avec db sql
    Par thierry007 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 03/10/2007, 11h27
  4. Alimenter la valeur d'un textbox avec une requete
    Par planetevoyage dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2005, 08h26
  5. pb positionnement avec float
    Par jerome38000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 17/08/2005, 19h40

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