2011-01-13 14 views
2

Ich erstellte eine grobe, nicht MVVM Demo in Silverlight, die verschiedene Linien und andere 2D-Objekte auf einem Canvas basierend auf einem Objekt gezeichnet Modell.Wie passt 2d Canvas Zeichnung basierend auf einem Objektmodell in MVVM, Caliburn & Silverlight (oh mein)

Ich portiere jetzt die Anwendung auf MVVM (Caliburn Micro) und bin jetzt an dem Punkt, wo ich meine Objekte in meinem ViewModel habe und sie auf der Leinwand in der Ansicht zeichnen muss.

Ist MVVM in diesem Fall das falsche Werkzeug für den Job?

Wo sollte ich den 2D-Zeichencode anbringen?

In Code-hinter der Ansicht?

Lassen Sie mich wissen, wenn Sie weitere Informationen über meine Situation benötigen, um zu helfen. Vielen Dank!

Antwort

3

In einer solchen Situation würde ich Ihr Canvas als benutzerdefinierte, unabhängige Steuerung behandeln.

Idealerweise möchten Sie es zu einem Steuerelement (vielleicht ein UserControl) mit einer Abhängigkeitseigenschaft für die "Objekte" machen. Der Benutzer dieses Steuerelements würde die Objekte an eine Auflistung im ViewModel (Parented Control) binden und dies nur als Teil der Ansicht behandeln.

Als solche ist es 100% View - so kann der Code beliebig implementiert werden. Es fällt irgendwie außerhalb von MVVM, da es ganz "Ansicht" ist.

+0

Klingt gut Reed, nahm mich so lange MVVM zu grok, dass ich sicher sein wollte, dass meine Einschätzung, dass dies zu 100% zu sehen war. –

+0

Ich stimme der Empfehlung von Reed zu. –