2009-06-04 15 views
1

Haben Sie Best Practices für die Einrichtung von Kopf-/Linien Formen einzurichten in WPF oder Silverlight (auch als Header/Einzelheiten bekannt)? Vorzugsweise mit dem Mode-View-ViewModel-Designmuster, das sich in den Rest meiner Anwendung einfügt.Wie Header/Linien in WPF/Silverlight

Ein Beispiel wäre, wenn ich ein Raster hätte, das alle SalesOrders in der Datenbank anzeigt, und darunter ein Raster, das alle SalesOrderDetails (Die einzelnen Zeilen für den Kundenauftrag ... jedes verkaufte Element) für die ausgewählten Kundenauftrag im oberen Raster.

Ich weiß, ich könnte dies in den Code hinter der Datei auf dem Grid SelectionChanged-Ereignis tun, aber ich würde eine deklarative Art und Weise so tun ... in allen XAML und ViewModel-Code. Ist das möglich?

Danke, Roy

Antwort

2

Header/Zeilen klingt viel wie der Meister - Detail mir Muster. So etwas mit MVVM zu implementieren ist ziemlich einfach.

Wenn wir eine Struktur erstellen würden, in der wir ein MasterViewModel und ein DetailViewModel hätten, dann würden wir in unserem MasterViewModel einfach eine Eigenschaft benötigen, um unsere Liste der Details und des aktuellen Details darzustellen. In der Ansicht können Sie die ItemSource einer Liste an die Auflistung von Details binden und das SelectedItem an die CurrentDetail-Eigenschaft binden. Wir können dann eine separate Ansicht als DataTemplate oder UserControl verwenden, die CurrentDetail darstellt und unsere Werte im Detailraster anzeigt.

Es gibt auch einige gute Ressourcen gibt ein Master-Detail-Muster XAML an der Umsetzung.

Bea Stollnitz hat zwei hervorragende Beispiele mit XML für die Datenquellen: Here und Here.

Es gibt eine MSDN video auf das Muster in WPF implementieren. (Das Video ist in VB, aber der Code kann in C# heruntergeladen werden). In dieser MSDN forums Diskussion demonstriert Johnny Q. eine einfache Master-Detail-Einstellung mit MVVM.

Viele Karl Shifflett's Beispiele auch das Master-Detail-Muster am Ende zeigt, obwohl der Code in der Regel in VB ist (jedoch einige Beispiele kommen sowohl mit C# und VB-Code.)

Verwandte Themen