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 :

Problème de binding Combobox


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 176
    Par défaut Problème de binding Combobox
    Bonjour,

    Je suis débutant WPF et tente de réaliser une application de gestion de recettes de cuisine.

    J'ai donc une page consacrée à l'édition de la recette. Une listbox affiche la liste des recettes disponibles. Tous mes contrôles sont dans une grid qui a pour datacontext le selected item de ma listbox qui elle même a pour itemssource une liste de recettes provenant d'une base SQL.

    Toutes mes textbox fonctionnent à merveille, quand je perds le focus, la recette est mise à jour en base, un vrai bonheur sauf que...

    Mon objet recette dispose d'un objet "Catégorie de recette" qui n'a pour propriétés qu'un Id et un nom (exemple : Id : 1 Nom : Dessert). Au chargement de la page, je remonte de la base la liste complète de ces catégories et je dis à la combobox correspondante que son itemssource est cette liste.

    Je lui indique également que la selectedvalue sera {Binding Path=CategorieRecette}. Enfin, je mets DisplayMemberPath="Nom" SelectedValuePath="Nom" (la propriété Nom de l'objet CatégorieRecette).

    Ca fonctionne à merveille, quand je sélectionne une recette dans la listbox, la combobox sélectionne et affiche bel et bien la catégorie de recette à laquelle elle appartient.

    Là où ça se complique, c'est lorsque je décide de changer de catégorie. Ma recette "Mousse au chocolat" est en catégorie "entrée". Je clique sur la combobox et pour changer et... il ne se passe rien en base. Je vois le message suivant apparaître dans la fenêtre d'exécution.

    System.Windows.Data Error: 7 : ConvertBack cannot convert value 'Entrée' (type 'String'). BindingExpressionath=CategorieRecette; DataItem='Recette' (HashCode=654235); target element is 'ComboBox' (Name='ComboBoxCatRecette'); target property is 'SelectedValue' (type 'Object') NotSupportedException:'System.NotSupportedException: Conversion de TypeConverter impossible à partir de System.String.
    à MS.Internal.Data.DefaultValueConverter.ConvertHelper(Object o, Type destinationType, DependencyObject targetElement, CultureInfo culture, Boolean isForward)
    à MS.Internal.Data.ObjectTargetConverter.ConvertBack(Object o, Type type, Object parameter, CultureInfo culture)
    à System.Windows.Data.BindingExpression.ConvertBackHelper(IValueConverter converter, Object value, Type sourceType, Object parameter, CultureInfo culture)'
    Je comprends bien qu'il ne parvient pas à convertir un string mais pourquoi convertir un string alors qu'il est rempli d'objets métiers ???

    D'avance, merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Montre nous ton code car là, ce n'est pas très clair....

  3. #3
    Membre confirmé

    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 176
    Par défaut
    Ok,

    Voici donc le code. Le XAML de la grid générale :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <Grid DataContext="{Binding ElementName=ListboxRecettes, Path=SelectedItem}">
    </Grid>

    La listbox contenant les recettes (qui je remplis dans le code au chargement de la page via ListboxRecettes.ItemsSource = MaListeDeRecettes

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <ListBox Grid.Row="1" x:Name="ListboxRecettes" HorizontalAlignment="Stretch" SelectionChanged="ListboxRecettes_SelectionChanged"></ListBox>

    Voici un exemple de contrôle qui fonctionne parfaitement au niveau du binding (si je modifie, mon objet est modifié)

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <TextBox Grid.Column="2" xml:lang="fr-FR" SpellCheck.IsEnabled="True" Margin="5,0,5,0" Text="{Binding Path=Cuisson}" VerticalAlignment="Center"></TextBox>

    Donc, si je change le text de cette textbox et que j'en perds le focus, mon objet recette en cours voit sa propriété Cuisson (qui n'est qu'un simple string) modifiée. C'est exactement ce que je voulais.

    Maintenant, voici une des mes combobox

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox Grid.Column="0" SelectedValue="{Binding Path=CategorieRecette}" DisplayMemberPath="Nom" SelectedValuePath="Nom" x:Name="ComboBoxCatRecette" Margin="5" ></ComboBox>

    Là aussi, je charge l'ItemsSource de la combobox au chargement de la page avec une liste de catégories de recettes.

    Quand je sélectionne une recette dans la listbox, la combobox m'affiche bien sa catégorie de recette, ça fonctionne. Mais si je la modifie en en sélectionnant une autre, rien ne se passe dans l'appli. Seul le message d'erreur relaté plus haut apparaît dans la fenêtre d'exécution.

    Une idée ?

Discussions similaires

  1. probléme du Binding d'un Combobox
    Par yayasam dans le forum C#
    Réponses: 8
    Dernier message: 09/04/2010, 13h51
  2. Problème avec une Combobox
    Par Silverstone dans le forum Visual C++
    Réponses: 4
    Dernier message: 23/08/2006, 11h46
  3. [.net] Problème avec un combobox.
    Par adicor dans le forum MFC
    Réponses: 13
    Dernier message: 07/06/2006, 14h56
  4. [C#][MySQL 5.x]Problème de Binding
    Par Oufti dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/05/2006, 23h44
  5. [VB.NET] Problème sur composant comboBox hérité
    Par SergeF dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2004, 14h54

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