/ / SL5 + MEF + PRISM + DataGrid + Zeilen im modalen Dialogfeld bearbeiten: Ist InteractionRequest die Antwort? - c #, silverlight, datagrid, prisma

SL5 + MEF + PRISM + DataGrid + Zeilen im modalen Dialog bearbeiten: Ist die Interaktionsanfrage die Antwort? - c #, silverlight, Datagrid, Prisma

Ich schreibe gerade eine unserer großen Silverlight-Apps, um PRISM und das MVVM-Entwurfsmuster zu verwenden.

Ein sehr häufiges Szenario ist ein DataGrid in der Ansicht. Durch Doppelklicken auf eine Zeile kann der Benutzer die von der Zeile dargestellte Entität mit einem ChildWindow bearbeiten.

Ich bin in der Versuchung, einfach das DoubleClick-Ereignis im Code dahinter zu erfassen, ein neues ChildWindow des richtigen Typs zu erstellen und den DataContext auf DataGrid.SelectedItem zu setzen.

Ich weiß jedoch, dass dies nicht der richtige Weg ist, um dieses Szenario mit PRISM und MVVM zu handhaben.

Ich würde gerne Ratschläge geben, was ist! (re: mein Titel ... es scheint, als wäre InteractionRequest der beste Weg, dies zu tun?)

Vielen Dank...

EDIT: Wir haben uns letztendlich für InteractionRequest für unsere Lösung entschieden. Wir verwenden fast immer "Benachrichtigung" als Typ und übergeben ein neues ViewModel (jedes ChildWindow hat ein eigenes) als Inhalt.

Antworten:

1 für die Antwort № 1

In unserem Fall war die ChildWindow-Ansicht komplex genug, um ein eigenes Viewmodel zu gewährleisten. Diese Ansicht ist nicht zu eng mit der Datengitteransicht gekoppelt.

Daher haben wir in XAML einen EventTrigger an das Datengrid angeschlossen (wir verwenden eigentlich das Datengrid von Telerik). Der Ereignisauslöser führt einen Befehl im Ansichtsmodell mit InvokeCommandAction aus.

Der Befehl veröffentlicht ein aggregiertes Ereignis, dashat den ausgewählten Artikel als Nutzlast. Das Ereignis wird vom zentralen Anwendungscontroller abgeholt, der für die Erstellung der ChildWindow-Ansicht und eines entsprechenden Ansichtsmodells (unter Verwendung der Ereignisnutzlast als Kontext) verantwortlich ist.

Ich denke diese Interaktionsanfrage könntemöglicherweise in Ihrem Fall verwendet werden, aber nach meinem Verständnis ist die Idee einer Interaktionsanfrage eine sehr einfache Ok- oder Ja / Nein-Interaktion. Sie können die Grenzen mit einer Reihe von Textfeldern, Validierung usw. verschieben.