Frage

Ich habe Listview-Steuerelement in meiner Anwendung, die binded ist auf die Sammlung von CustomObject Liste << strong> CustomObject >. Die CustomObject hat separate Ansicht. Das Listview hat separate Ansicht Modell.

Die Sammlung Liste _customobject ist in der Listview-Ansichtsmodell Klasse containted.

Meine Frage:

Ich möchte eine Ansicht aufzurufen, die Eigenschaften von benutzerdefinierten Objekts zeigen, wenn der Benutzer einen Doppelklick auf eine Zeile von Listview. Das Listview Doppelklick Befehl an dem binded ListViewDoublClick Befehl in dem View-Modell. Die CustomObject ist im Falle Argument der Listenansicht Doppelklick auf Befehl. Um acheive dieses Ich muss das benutzerdefinierte Objekt übergeben (oder eine eindeutige ID-Eigenschaft von benutzerdefinierten Objekts, durch die ich das benutzerdefinierte Objekt aus der Sammlung abrufen kann) als Befehlsparameter.

Bitte machen Sie mir die Lösung !!

War es hilfreich?

Lösung

Der einfachste Weg, dies zu tun, ist ein Doppelklick auf Ereignishandler zur Liste hinzuzufügen. Denken Sie daran: MVVM bedeutet nicht, keinen Code in der Ansicht! Es bedeutet, dass die Sicht nur Griffe Bedenken anzuzeigen. Sie können ein wirklich gutes Argument, dass die EventArgs die Ansicht nur dann sinnvoll sind, und wenn Sie es an das Ansichtsmodell übergeben mögen, sollten Sie nur die relevanten Informationen übergeben. Wenn Sie etwas zu tun, wie Daten von einem EventArgs Extrahieren es das Ansichtsmodell zu passieren, die akzeptabel und angemessen ist ... und besser als die EventArgs vorbei nach unten in das Ansichtsmodell, IMHO.

(Ich bin sicher, ich werde einige Meinungsverschiedenheiten über diesen Punkt, aber mit UI-Interaktion zu tun ist eine Ansicht, Sorge und wenn die Alternative ist ein Verhalten, das Schreiben oder einen Rahmen mit einem einzigen Griff bekommen auf einer einzigen Seite arbeiten, erinnern. YAGNI und Muster sind nicht Religion)

Einige der MVVM-Frameworks ermöglicht es Ihnen, dies zu tun (obwohl es viele Diskussionen über ist, wenn es eine gute Idee ist oder nicht). Inparticular, die MVVM Light Toolkit dies ein wenig hinzugefügt, während vor, um Unterstützung per Drag & Drop (wenn ich mich erinnere die Blog-Post korrekt).

Wenn Sie keinen MVVM-Framework, ich habe ein Verhalten Schreiben Liquidation, mir zu erlauben, dies zu tun, wenn ich die gleiche Sache an mehreren Stellen tun würde. In diesem Fall extrahieren ich in der Regel die Informationen, die ich Pflege von den EventArgs (das heißt Sie wahrscheinlich wirklich nicht die vollen Event args wollen, aber Sie wahrscheinlich egal, welches Element geklickt wurde und vielleicht noch ein paar andere Bits von Daten).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top