2009-04-23 7 views
1

Je construis une application de gestion des commandes WPF et j'ai rencontré une situation dans laquelle je ne suis pas sûr de savoir comment gérer. Je souhaite relier la liste des demandes de bons de commande pour chaque commande, mais je veux seulement le faire si le panneau des demandes de bon de commande est visible dans l'application (ils double-cliquez sur la commande pour afficher la liste des achats demandes de commande). Le problème que j'ai est que les demandes d'ordre d'achat sont une liste à l'intérieur de chaque élément de liste de la liste de commande et je ne peux pas trouver un moyen de parcourir les contrôles dans les éléments de liste (je peux seulement itérer sur les objets réels par exemple).Contrôles d'accès WPF dans un DataTemplate d'un ListBox

Ce que je voudrais faire est

OrderListBox.FindName("PurchaseOrderListBox") 

Un exemple de crm avec 2 commandes montrant des demandes de commande d'achat et 1 pour ne montrer aucun alt text http://www.readyflowers.co.uk/images/crm-datatemplate.png

Le résultat que je veux atteindre alt text http://www.readyflowers.co.uk/images/crm-datatemplate-saved.png

Répondre

1

Je ne suis pas sûr de comprendre votre problème ....

Mais il semble que vous essayez de pirater la hiérarchie de l'interface utilisateur pour trouver quelque chose (alfa WinForms) - c'est comme nager contre la marée dans WPF. Il va vous fatiguer très vite ..

Rechercher des articles sur le modèle ViewModel. L'un d'eux que j'ai lu est un par Dan Crevier. L'idée de base est d'avoir un objet Modèle pour l'interface utilisateur - l'interface utilisateur (données) se lie aux propriétés exposées par le ViewModel. Maintenant, toute votre logique liée à l'interface utilisateur pourrait aller dans le ViewModel, qui est notifié via les notifications propertyChanged de tout changement dans l'état de la session. Donc, si un champ change, le ViewModel est averti. ViewModel met à jour les propriétés pertinentes et actualise l'interface utilisateur en conséquence. Dans ce cas, ViewModel.OrderInfo.Find_PO_with_X(searchCriteria) vous aidera à atteindre le bon objet. Si trouvé, vous dites ViewModel.ShowGreenLight = true et le contrôle de l'interface utilisateur lié à cette propriété passera au vert.

HTH

Questions connexes