[winform] flowlayoutPanel Bindable

Signaler
-
Messages postés
56
Date d'inscription
mercredi 3 octobre 2012
Statut
Membre
Dernière intervention
13 mai 2015
-
Bonjour,

Est-il possible de rendre un flowlayoutPanel bindable?

Je m'explique.

J'ai un applicatif qui permet d'encoder des commandes pour un bar.

Tout fonctionne bien. Mais j'ai l'impression que ma façon de travailler pourrait être bien mieux.

Le programme consiste à récupérer les produits existants dans une DB.
à partir de ces produits, je crée une List<Produit>.

à partir de cette liste, je crée 3 listes de boutons, listes faites à partir du type de produit.
- List<Bouton> boutonsSnack, List<Bouton> boutonsBiere, List<Bouton> boutonsSoft.

et en fonction du choix de type de produit que l'utilisateur veut afficher, j'ajoute un par un mes boutons dans le flowlayoutPanel.

chaque bouton a comme "fond" l'image du produit, et la propriété Tag du bouton reçoit l'objet Produit.

Dejà là, n'y a t'il pas moyen de faire plus propre?

Par là je veux dire que quand je clique sur le bouton correspondant à un produit, je récupère le produit stocké dans le Tag du bouton.
Je teste ensuite si ce produit est encore en stock ( directement sur l'objet ).
S'il est en stock, il faut réduire le stock, etc...

J'ai l'impression que c'est un peu brouillon tout celà.

N'y a t'il pas une manière plus propre de "binder" le flowlayoutpanel à la liste de mes produits, qui seront représentés dans ce flowlayoutpanel par des boutons et que des actions sur ces boutons se répercuteraient directement sur les produits qu'ils représentent?


Toute idée est la bienvenue :)

Merci

6 réponses

Messages postés
56
Date d'inscription
mercredi 3 octobre 2012
Statut
Membre
Dernière intervention
13 mai 2015

Bonjour,

J'ai lus ton idée alors je fais vite pour écrit je reviens plus tard.
Ton application est en WPF non en WindForm pour utilisé le Binding ?

Bref, alors si tu veux bien structure ton application coté code tu peux utiliser l'architecture MVVM ou MVC si tres lourds. Je te conseille le MVVM.

Ensuite quand tu va cliqué sur un bouton, pourquoi pas crée un objet puis tu envoie cela a ta BDD qui va dire si oui ou non il y a le stock.

--
Messages postés
8
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
3 mars 2020

Bonjour,

Mon application est du winform et non du WPF.

Le principe est justement de faire le moins d'accès possible à la DB.

Je suis parti sur des classes personnalisées, une qui hérite de la classe Button avec comme propriété un produit
et une autre classe qui hérite de FlowlayoutPanel qui reçoit en paramètre ma liste de produits et qui crée mes boutons.
Messages postés
56
Date d'inscription
mercredi 3 octobre 2012
Statut
Membre
Dernière intervention
13 mai 2015

Si tu veux faire le moins d'accès possible à la DB.
Utilise le designe Pattern Singleton.
Comment a tu structuré ton code ? MVVM ou architecture 3 tiers ou etc ....

Voici un lien pour le MVVM avec WindForm
http://blog.soat.fr/2012/02/comment-utiliser-mvvm-avec-windows-forms/

--
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
28
Bonsoir

Je ne crois pas qu'il soit possible de "binder" la propriété "Controls" d'un flowlayoutPanel, qui ne possède pas non plus de datasource.
donc à part utiliser un autre type de contrôle (DataGridView) mais qui changerait radicalement la présentation, ton approche me semble tout à fait "propre"
@thefolin : Je dirais plutôt 3 tiers sans être sûr de respecter toutes les règles pour ce soit fait correctement.
Je vais jeter un coup d'oeil à ton lien, car je ne pensais même pas que le MVVM était applicable au Winform.

@cs_Robert33 : Effectivement ma solution n'utilise pas le binding, mais est une façon bien plus propre que ma solution de départ.
Messages postés
56
Date d'inscription
mercredi 3 octobre 2012
Statut
Membre
Dernière intervention
13 mai 2015

L'architecture 3 tiers peut être mis en place avec le MVVM :)

--