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

Silverlight Discussion :

[BINDING] Problème de binding sur un AutoCompleteBox


Sujet :

Silverlight

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut [BINDING] Problème de binding sur un AutoCompleteBox
    Bonjour,
    J'arrive à réaliser un binding sur un AutoCompleteBox avec une liste de string, par contre mon problème est que je n'y arrive pas un business object.

    Voici me code serveur permettant de remplir les items de ma AutoCompleteBox ainsi que de filtrer mes items :
    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
     
    void svc_GetItemsCompleted(object sender, GetCompaniesCompletedEventArgs e)
    {
      XDocument xDoc = XDocument.Parse(e.Result.ToString());
     
      var objects = from obj in xDoc.Descendants("ITEM")
                    select new MyItem
                    {
                      Key = company.Attribute("ID").Value,
                      Value = company.Attribute("LABEL").Value
                    };
     
      this.myautocompletebox.DataContext = objects;
      this.myautocompletebox.ItemFilter = (search, item) =>
                    {
                      MyItem cboItem = item as MyItem;
                      if (null != cboItem)
                      {
                        return (cboItem.Value.ToLower().Contains(filter.ToLower()));
                      }
                      return false;
                    };
    }
     
    	public class MyItem
    	{
            public string Key { get; set; }
            public string Value { get; set; }
            public override string ToString()
            {
                return Value;
            }
    }
    Ensuite mon contrôle dans le xaml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input:AutoCompleteBox x:Name="myautocompletebox" FilterMode="Custom" ItemsSource="{Binding}" Style="{StaticResource CustomAutoCompleteBox}"/>
    Et enfin mon style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <Style x:Key="CustomAutoCompleteBox" TargetType="input:AutoCompleteBox">
            <Setter Property="ItemTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding Value}"/>
                            <TextBlock Text=" - "/>
                            <TextBlock Text="{Binding Key}"/>
                        </StackPanel>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
    </Style>
    Le résultat ?
    Il n'y pas de binding !!!!
    J'avoue ne rien comprendre !
    Merci de votre aide.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 121
    Points : 135
    Points
    135
    Par défaut
    Pourrais tu juste essayer de supprimer ceci dans le XAML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding}"
    Et remplacer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.myautocompletebox.DataContext = objects;
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.myautocompletebox.ItemsSource= objects;

  3. #3
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    Après modifications j'ai bien la liste de ma AutoCompleteBox qui s'affiche tel que décrit dans le style et filtre fonctionne bien.
    Par contre lorsque je sélectionne un item j'ai "MyProject.MyItem" qui s'affiche et cela quelque soit l'item sélectionné !
    En fait ça correspond au type de mon item....

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 121
    Points : 135
    Points
    135
    Par défaut
    MSDN

    Regarde les propriétés :

    - ValueMemberBinding
    - ValueMemberPath

  5. #5
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    nickel !
    merci !

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

Discussions similaires

  1. Problème de binding sur les propriété IsEnabled des boutons
    Par Alterans dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 06/12/2014, 11h29
  2. Réponses: 0
    Dernier message: 02/05/2011, 17h37
  3. Problème de binding sur un gridView WPF Toolkit
    Par fragmonster dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 31/07/2009, 11h39
  4. Réponses: 1
    Dernier message: 15/11/2007, 21h02
  5. [C#][MySQL 5.x]Problème de Binding
    Par Oufti dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/05/2006, 23h44

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