2009-06-04 3 views
1

Avez-vous des bonnes pratiques pour configurer les formulaires En-tête/Lignes (Aussi connu sous En-tête/Détails) dans WPF ou Silverlight? Utilisez de préférence le motif de conception Mode-View-ViewModel pour l'adapter au reste de mon application. Un exemple serait si j'avais une grille qui affichait toutes les SalesOrders dans la base de données, et en dessous une grille qui montrait toutes les SalesOrderDetails (les lignes individuelles pour la commande ... chaque article vendu) pour la la commande client sélectionnée dans la grille supérieure.Comment configurer l'en-tête/les lignes dans WPF/Silverlight

Je me rends compte que je pourrais le faire dans le code derrière le fichier sur l'événement SelectionChanged de la grille, mais je préférerais une façon déclarative de le faire ... dans tout le code XAML et ViewModel. Est-ce possible?

Merci, Roy

Répondre

2

tête/Lines sonne beaucoup comme le Maître - modèle de détail pour moi. Mettre en œuvre quelque chose comme ça en utilisant MVVM est assez simple.

Si nous devions créer une structure où nous avions un MasterViewModel et un DetailViewModel alors dans notre MasterViewModel nous aurions simplement besoin d'une propriété pour représenter notre liste de détails et le détail actuel. Dans la vue, nous pouvons lier ItemSource d'une liste à la collection de détails et lier l'objet SelectedItem à la propriété CurrentDetail. Nous pouvons alors avoir une vue séparée, en tant que DataTemplate ou UserControl, qui représente CurrentDetail et affiche nos valeurs dans la grille de détail.

Il existe également de bonnes ressources pour l'implémentation d'un modèle XAML de modèle de détail principal.

Bea Stollnitz a deux échantillons excelent en utilisant XML pour les sources de données: Here et Here.

Il existe un MSDN video lors de l'implémentation du modèle dans WPF. (La vidéo est en VB mais le code peut être téléchargé en C#).

Dans cette discussion MSDN forums Johnny Q. démontre un simple paramétrage maître-détail en utilisant MVVM.

Beaucoup de Karl Shifflett's exemples finissent aussi montrer le modèle maître-détail, bien que le code est généralement en VB (cependant quelques exemples viennent avec C# et VB du code.)