Salut,
J'ai créé une fenêtre pour éditer des objets Movie (dont le code est généré avec LINQ To SQL). Quand j'affiche la fenêtre, je mets mon objet Movie dans le DataContext de la fenêtre. Chaque champ de ma fenêtre est bindé sur une propriété de mon objet. Pour les simples champs texte, pas de problème... là où ça coince, c'est pour les propriétés qui correspondent à des associations.
Par exemple, Movie a une association vers Director. Le designer LINQ m'a généré une propriété DirectorId (qui correspond à un champ de la table movie), et une propriété Director (qui correspond au réalisateur "pointé" par DirectorId).
Je voudrais que le champ servant à changer le réalisateur soit un ComboBox permettant de sélectionner un réalisateur existant. J'ai donc créé mon combo de la façon suivante :
La liste est bien remplie avec les réalisateurs définis dans la base, mais le réalisateur du film en cours d'édition n'est pas sélectionné... en revanche, si j'en sélectionne un dans la liste, la modification est bien répercutée sur mon objet Movie...
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <ComboBox ItemsSource="{Binding Directors, Source={StaticResource db}}" SelectedItem="{Binding Director}" IsEditable="True" />
J'ai aussi essayé cette méthode là :
Dans ce cas, mon réalisateur est bien sélectionné... mais si j'en choisis un autre, seule la propriété DirectorId est modifié, pas la propriété Director... si bien que mon objet est dans un état incohérent, puisque l'id et le réalisateur ne correspondent plus. J'ai regardé le code généré par le designer LINQ, et effectivement une modification de DirectorId ne met pas à jour Director. Par contre une modification de Director met à jour DirectorId... Bien sûr, je pourrais implémenter la méthode partielle OnDirectorIdChanged pour forcer la mise à jour de Director, mais je me dis qu'il doit y avoir plus simple...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <ComboBox ItemsSource="{Binding Directors, Source={StaticResource db}}" DisplayMemberPath="Name" SelectedValuePath="Id" SelectedValue="{Binding DirectorId}" IsEditable="True" />
Donc, en résumé, je voudrais :
- que le réalisateur actuel du film soit automatiquement sélectionné
- que la sélection d'un autre réalisateur dans la liste change la propriété Director du film
Et tout ça, bien sûr, uniquement en XAML de préférence...
Si vous avez des idées ça me rendrait bien service, parce que moi je commence à être à court...
Merci d'avance![]()
Partager