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 :

[Débutant][Binding]une chaine dans ma status bar


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut [Débutant][Binding]une chaine dans ma status bar
    Bonjour,

    Je débute en wpf et je fais des tests perso. Un peu d'aide serait utile car je bloque.

    Le binding n'est pas réservé au MVVM? je ne fais pas de MVVM pour le moment.

    Dans mon appli, j'ai une status bar avec des items:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <StatusBar Height="20" Name="statusBar2" VerticalAlignment="Bottom">
                <StatusBarItem>Ici je souhaite mettre mon message</StatusBarItem>
    </StatusBar>
    Le message en dur, j'arrive à le mettre sans trop de difficulté...

    Maintenant je voudrais afficher le message qui se trouve dans mon cs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public partial class Window1 : Window
        {
            string statusBarMessage = "misAjourDansCode";
            /* code */
        }
    Je pensai faire du binding, mais j'y arrive pas (j'arrive même pas à trouver le code qu'il faut, trop de tag).
    Est-ce possible? sinon quelle méthode utilisé?

    c'est vraiment débutant mais je veux commencer simple et sur le net les exemples vont dans tous les sens, je m'y perd.

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    le message qui se trouve dans ton cs doit être une proprieté. Après ça tu assigne le DataContext de ton Statusbar à l'instance de ta classe Window1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this. statusBar2.DataContext = this;
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <StatusBar Height="20" Name="statusBar2" VerticalAlignment="Bottom">
                <StatusBarItem Text="{Binding Path= StatusBarMessage, Mode=OneWay}">
    </StatusBar>

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    Bonjour,

    J'y arrive pas, mon texte ne se met pas à jour.

    Voici mon code:
    xaml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <StatusBarItem>
                    <TextBlock Name="zonePerso" Text="{Binding Path=monmessage}"/>
                </StatusBarItem>
    cs:
    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
    31
    32
    33
    34
    35
     
     
        public partial class Window1 : Window
        {
     
            private string myMessage = "empty";
     
            public string monmessage
            {
                get
                {
                    return myMessage;
                }
                set
                {
                    myMessage = value;
                }
            }
     
            public Window1()
            {
                InitializeComponent();
                this.zonePerso.DataContext = this;
            }
     
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                monmessage = "Coucou";
            }
     
            private void button2_Click(object sender, RoutedEventArgs e)
            {
                monmessage = "Byebye";
            }
        }
    Je bloque, je voit pas où je suis pas bon...

  4. #4
    Membre Expert
    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
    Par défaut
    pour que ca se met a jour sur un binding il faut que la classe contenant ton text implemente inotifypropertychanged
    et que tu rajouter dans le set de ton text l'envoi du message

    dans ton exemple en effet ca a pas trop de sens en effet tu pourrais faire
    zonePerso.text = "message";

    mais dans une classe ca donne ca
    par exemple
    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
     
     public class Personne : INotifyPropertyChanged
        {
            private string _Nom = "";
            public string Nom
            {
                get { return _Nom; }
                set 
                { 
                    _Nom = value;
                    OnPropertyChanged("Nom");
                }
            }
    ........
           private void OnPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
    }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    pinaise! je suis complètement barré! j'y ai même pas pensé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zonePerso.text = "message";
    Merci

  6. #6
    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
    Par défaut
    Citation Envoyé par kacedda Voir le message
    pinaise! je suis complètement barré! j'y ai même pas pensé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zonePerso.text = "message";
    Merci
    Par contre ce n'est plus du binding
    Si tu veux faire du binding comme le laissait comprendre ton titre de message, c'est bien la méthode qu'ikeas a proposé qu'il faut mettre en place.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/10/2005, 16h38
  2. Comment surligner une chaine dans un RichEdit
    Par esteban63 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/09/2005, 01h33
  3. [JSP] mettre une chaine dans un format precis
    Par logica dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/06/2005, 11h21
  4. Réponses: 3
    Dernier message: 17/12/2003, 12h26
  5. Réponses: 2
    Dernier message: 10/07/2002, 12h51

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