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 :

Bin entre ComboxBox et TextBox


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut Bin entre ComboxBox et TextBox
    Hello,

    je cherche à faire un truc apparemment tout bête, mais sans succès.
    J'ai une combobox qui a pour source une ObservableCollection de ChartArea.
    Je veux binder ma textbox sur une propriété du ChartArea sélectionné, et éditer cette propriété, et sur changement de selectedItem de la combobox, changer la valeur de la textbox.

    J'ai ça actuellement :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <ComboBox Name="cbSelectArea" Margin="10 5 10 5" Grid.Row="0" Grid.Column="1" ItemsSource="{Binding Path=Areas}" >
                                    <ComboBox.ItemTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding Converter={StaticResource NameAreaConverter}}" />
                                        </DataTemplate>
                                    </ComboBox.ItemTemplate>
                                </ComboBox>
     
     
    <TextBox Name="HeaderText" Text="{Binding ElementName=cbSelectArea, Path=Header, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Row="1" Grid.Column="1"  Height="22" Margin="10 5 10 5" ></TextBox>

    Mais quand je sélectionne un item ma tb n'est pas mise à jour, et si je modifie la textbox puis que je rentre dans le debuggueur, je vois que ma propriété Header reste à null...


    Merci pour votre aide

  2. #2
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Blop,

    Essaye plutôt cela comme Path de ton binding : SelectedItem.Header pour bien te binder sur l’élément sélectionné dans la combobox !

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    AH oué, en effet ça va de suite mieux !

    Un dernier souci, avec le converter sur la ComboBox, de la forme suivante :

    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
    public class NameAreaConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                ChartArea area = value as ChartArea;
     
                if (area == null)
                    return String.Empty;
     
                return String.IsNullOrWhiteSpace(area.Header as String) ? area.Name : area.Name + " - " + area.Header;
            }
     
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
    Mon converter regarde si l'objet comporte un header, selon le cas il formatte l'élément à afficher dans la Combobox.

    Le formatage se fait bien au démarrage, mais si je modifie le header d'un area via la TextBox :
    - Dans la dropDownList le nom des items ne sont pas rafraichis,
    - Une fois l'item sélectionné, la combobox affiche le nom à jour.

    Comment toujours avoir le nom à jour ?

    Merci

  4. #4
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Hello,

    Ton objet ChartArea implémente bien INotifyPropertyChanged ? Et si oui tu raises bien l'event PropertyChanged lorsque tu modifies le Header ?

    Sinon essayes de raiser l'event avec String.Empty comme nom de propriété..

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Le ChartArea est un composant tiers, mais en effet il n'implémente pas INotifyPropertyChanged -_-

    Je suis obligé de partir en code-behind j'imagine pour faire un espèce de rafraichissement manuel ?

  6. #6
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Mmmmhh oui... Ce serait peut être mieux de wrapper tes objets pour les rendres bindable : http://blog.lexique-du-net.com/index...olution-1-of-n).

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

Discussions similaires

  1. [VBA-E]Entrée dans une textbox
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2006, 17h54
  2. liste du texte déjà entré dans un textbox
    Par horneth dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 22/10/2006, 17h37
  3. [VB.net] liaison entre table et textbox's
    Par collaud_vb dans le forum Windows Forms
    Réponses: 10
    Dernier message: 25/09/2006, 13h27
  4. [VB]Pb update entre mon group textbox(i) et ma DataSource
    Par MITCH31 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 31/01/2006, 09h23
  5. [Javascript] appui sur la touche entrée dans une textbox
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/01/2006, 11h19

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