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 :

Rafraichissement textbox binder [Débutant]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 256
    Par défaut Rafraichissement textbox binder
    Bonjour,

    Je commence le WPF et je coince sur un point:
    j'ai un textbox qui est binder sur une propriété en lien avec un EDM, dans lequel je rentre n'importe une valeur et quand je clique sur un bouton il y a un controle de validation. Le soucis est que après avoir cliqué sur le bouton, mon textbox devient vide ??
    Je pensais que cela venait du mode "TwoWay", mais si je me met en mode OneWay j'ai le nom de mon objet qui apparait dans textbox.

    XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <TextBox Height="23" HorizontalAlignment="Left" Margin="37,226,0,0" Name="textBox3" VerticalAlignment="Top" Width="120">
                <Binding Path="MonClient" Mode="TwoWay">
                    <Binding.ValidationRules>
                        <ctrl:ValidationText></ctrl:ValidationText>
                    </Binding.ValidationRules>
                </Binding>
            </TextBox>
    Le code de ma fenetre principal:
    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
     
    public ClientViewModel ViewModel
            {
                get { return this.DataContext as ClientViewModel; }
                set { this.DataContext = value; }
            }
     
            public Window1()
            {
                ViewModel = new ClientViewModel(); 
                InitializeComponent();
            }
     
            private void bt1_Click(object sender, RoutedEventArgs e)
            {
                Client cl = new Client();
                cl.codeClient = textBox3.Text;
     
                ViewModel.MonClient = cl;
            }
    Implémentation de INotifyPropertyChanged
    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
     
    public class ClientViewModel: INotifyPropertyChanged
        {
            private Client _client;
     
            public Client MonClient
            {
                get { return _client; }
     
                set
                {
                    if (_client != value)
                    {
                        _client = value;
                        OnPropertyChanged("MonClient");
                    }
                }
            }
     
            public event PropertyChangedEventHandler PropertyChanged;
     
            protected void OnPropertyChanged(string name)
            {
                PropertyChangedEventHandler handler = PropertyChanged;
     
                if (handler != null)
                    handler(this, new PropertyChangedEventArgs(name));
            }
        }
    Merci de votre aide

  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,

    Je crois qu'il y a une erreur de binding dans ton code. Tu dois binder ta propriété codeClient sur ta Textbox car elle ne peut pas afficher un objet complet (de type client) : il faut lui spécifier ce que tu veux afficher comme propriété !!

    Par exemple :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <TextBox Height="23" HorizontalAlignment="Left" Margin="37,226,0,0" Name="textBox3" VerticalAlignment="Top" Width="120">
    <Binding Path="MonClient.codeClient" Mode="TwoWay">
    	<Binding.ValidationRules>
    		<ctrl:ValidationText></ctrl:ValidationText>
    	</Binding.ValidationRules>
    </Binding>
    </TextBox>

    Ainsi ta méthode au clic sur ton bouton ne sert plus à rien ! dès que la valeur changera, le client verra son code mis à jour directement.
    Et tu peux rajouter UpdateSourceTrigger="PropertyChanged" pour le binding dans la textbox

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

Discussions similaires

  1. Binder des TextBox sur le SelectedItem d'un DataGrid
    Par FirePrawn dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 06/12/2013, 12h55
  2. Binder la propriété IsEnabled d'un bouton avec un trigger sur une textbox
    Par Will Fou dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 04/09/2012, 10h42
  3. WPF Binder textbox avec ma listview
    Par Desbiens dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 12/04/2010, 16h08
  4. Binder une TextBox à un DataGridColumn.Name dans un DataGridColumnHeader
    Par Krustig dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 18/06/2009, 10h31
  5. [VB.NET] Pb rafraichissement TextBox
    Par thebeb dans le forum ASP.NET
    Réponses: 5
    Dernier message: 01/02/2007, 15h43

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