Bonjour à tous,
Je suis actuellement en formation de développeur logiciel et j'étudie le .Net/C# et je bloque sur une chose, je vais essayer d'être le plus clair possible.
J'au un datagrid qui est peuplé avec un DataView qui renvoi une table "voiture" depuis mon DataSet.
La table contient des noms de voitures, marques, immatriculation etc.
Mon but est que lorsque je clique sur une des lignes de mon Datagrid, j'ai par exemple la bonne marque qui soit affichée dans le ComboBox.
J'ai parfaitement réussi à le faire en créant une ObservableCollection "ModelVoiture" de type string qui est bindé sur le ItemSource du ComboBox et le SelectedItem du ComboBox qui est bindé sur le SelectedItem qui va bien sur mon DataGrid :
1
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <ComboBox ItemsSource="{Binding ModelVoiture, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedItem.nom_model, ElementName=grid, Mode=TwoWay}" Grid.ColumnSpan="2" HorizontalAlignment="Left" Margin="814,87,0,0" VerticalAlignment="Top" Width="120" Height="35">
Jusque là pas de soucis mais mon but est qu'on puisse modifier certaines valeurs pour que je puisse modifier ma base de donnée pour pouvoir récupérer l'Id qui correspond à celui qui est dans ma base de donée et donc j'ai crée une ObservableCollection de type classe :
Mais là ça ne fonctionne plus. J'ai bien ma collection de voiture qui s'affiche dans mon combo box avec le DisplayMemberPath="Model" mais il n'y a plus de synchronisation avec le SelectedItem.
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 modelVoiture = new ObservableCollection<Voiture> { new Voiture{Model = "audi", IdModdel=1}, new Voiture{Model = "bmw", IdModdel=2}, new Voiture{Model = "mercedes", IdModdel=3} }; public class Voiture { public string IdModdel { get; set; } public string Model { get; set; } }
De ce que j'ai pu voir cela viendrai du fait que je peuple mon ComboBox avec un Objet et plus avec des string et du coup comme le SelectedItem se sert de la méthode Equal pour pouvoir trouver la correspondance dans la liste, il n'arrive donc forcément pas à trouver une correspondance entre un string "audi" et un objet "audi" même si ce dernier est une propriété string.
Je précise que j'utilise WPF ainsi que le pattern MVVM
Voilà j'espère pouvoir trouver une solution sinon je m'y prendrai autrement, merci pour votre aide.
Partager