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.
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 ???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)'
D'avance, merci pour votre aide.
Partager