Bonjour tout le monde,
je travaille sur une application en WPF et j'utilise le pattern MVVM que je viens de découvrir.
J'ai donc pris l'exemple de l'article écrit par Jérémy Alles, et je l'ai adapté à mon projet.
J'ai une liste de fournisseurs et de produits (pour chaque fournisseur) dans le MasterViewModel. Ces listes sont des ObservableCollection.
De plus, je déclare des ICollectionView pour chacun de mes éléments (objets) comme ceci :
J'ai également des commandes associées aux traitements que je veux réaliser. Exemple : vendre un produit. J'ai donc la commande "commandVendreProduit".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 this.fournisseurCollectionView = CollectionViewSource.GetDefaultView(this.fournisseurs); if (this.fournisseurCollectionView == null) throw new NullReferenceException("fournisseurCollectionView"); this.fournisseurCollectionView.CurrentChanged += new EventHandler(this.OnCollectionViewCurrentChangedFournisseur);
Dans la vue, je voudrais créer dynamiquement des boutons (personnalisés), et leur associer un fournisseur. Une fois que je clique sur un fournisseur, je dois afficher sa liste de produits (en passant pas "SelectedFournisseur" qui est de type FournisseurViewModel). Seulement voila, le SelectedFournisseur comporte toujours le premier élément de mon ObservableCollection fournisseurs. De même pour les produits...
je n'arrive pas à récupérer le frs ou le produit sur lequel je clique.
a l'affichage des produits je fais ca :
Note: ms est une instance de MasterViewModel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 UniformGrid gr = (UniformGrid)this.FindName("screen"); gr.Children.Clear(); gr.DataContext = ms.Produits; //ObservableCollection<ProduitViewModel> colPrd = ms.Produits; FournisseurViewModel leFournisseur = ms.SelectedFournisseur;
Puis quand je clique sur un produit :
Je vais bien dans la méthode VendreProduit() mais le selectedProduit est toujours le premier de la liste du MasterViewModel et pas celui sur lequel j'ai cliqué...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ((Bouton)sender).DataContext = ms.SelectedProduit; ms.CommandVendreProduit.Execute((ProduitViewModel)((Bouton)sender).DataContext);
Auriez-vous une idée pour régler ce problème ?
Merci beaucoup!
Partager