Problème WPF / Entity Framework / Data Binding - C#/.NET managed - Programmation
Marsh Posté le 22-09-2009 à 11:22:11
Oui c'est une solution a laquelle j'ai pensé... mais plutôt en dernier recours car pour moi l'idéal est d'avoir un affichage "mois" ou on consulte et un affichage "semaine" ou on peut modifier, tout en me servant (et c'est la que ça coince) des mêmes entités.
Ce que j'ai fais hier, c'est ajouter a ma classe MenuJourNormal un attribut listeProduits contenant la liste des produits, je peux donc afficher ma ComboBox avec la liste cependant il faut qu'elle soit cachée dans l'affichage "mois" et active dans l'affichage "semaine" et ça je ne sais pas faire ^^. Je ne sais pas non plus comment synchroniser ce Combo pour qu'il prenne par défaut la valeur du label correspondant dans mon MenuJourNormal mais bon ça ce n'est pas dramatique.
Niveau conception je ne suis pas sur non plus que ce soit très bon... la théorie voudrait que la liste des produits n'est pas grand chose a faire dans un menu journalier...
Marsh Posté le 21-09-2009 à 21:23:04
Bonjour,
Je me trouve devant un petit soucis. Je développe actuellement un logiciel permettant de générer des menus (un produit par jour sur 4 jours, lundi, mardi, jeudi et vendredi). Dans mon interface, j'ai un affichage pour un mois, divisé en 5 semaines, ayant chacune 4 jours.
Voilà un screen:
Les données affichées proviennent d'une base de données SQL Server Compact, j'utilise Entity Framework. Voilà le code XAML d'une semaine:
C'est donc un ItemControl tout bête auquel j'applique mon template pour afficher la date et les produits avec les Binding. Par code je récupère ce qu'il faut de la base et je modifie le DataContext de mon ItemControl pour qu'il reçoive un MenuSemaine qui contient des MenuJour.
Code du template:
J'utilise donc un template pour le type MenuJourNormal dans le code ci-dessus (j'en ai 3 autres, pour les jours fériés, de vacances et vide). Ces derniers héritent tous de MenuJour.
Ca c'était pour la présentation, maintenant voilà mon problème:
Lorsque je clique sur l'une des semaines, je voudrais l'afficher en "grand" (via un second ItemsControl récupérant la semaine sur laquelle on a cliqué) mais avec une particularité: pouvoir modifier le produit via une ComboBox répertoriant tout les produits disponibles dans la base de données. Et que celui-ci soit ensuite modifié dans la semaine correspondante en base.
Mon soucis et que je n'arrive pas a accéder au DataTemplate par code, et il semblerait, d'après ce que j'ai lu, qu'un DataTemplate n'est pas modifiable... J'aimerais rester au maximum côté XAML et ne pas devoir me taper ça en C#, ça limiterait l'intérêt de Blend et du WPF...
J'ai pensé a plusieurs solutions mais je n'en ai pas trouvé qui me convienne, si je mets ma seconde liste avec un ItemTemplate différent, il s'applique a tout les MenuJour hors je ne veux modifier que les MenuJourNormal...
De plus je ne sais pas comment faire pour faire un Binding vers mes entités a l'intérieur d'un DataTemplate et sans aucune ligne de code derrière (ne sachant pas accéder a cette dernière en C# et ne sachant pas si celle-ci est modifiable).
Dernière précision, le MenuSemaine que je bind sur ma liste et qui affiche les MenuJour contenus a l'intérieur ne contient évidemment pas la liste de tout les produits de la base...
Voilà, j'ai essayé d'être le plus clair possible mais bon, ce n'est pas évident donc si il y a des questions...
Merci d'avance.