私はここでかなり大きな問題を抱えています。描画アプリケーション(Caliburn.Micro)でMVVMを使用していますが、ライブプレビューで図形を描画するための合理的な方法が見つかりません。
描画キャンバスは、入力を取得してデータをモデルにフィードするキャンバスと、各レイヤーに1つずつ、多数のキャンバスを保持するグリッドで構成されます。モデルはイベントを発生させます(例としてLineを使用します):
- Lineを作成するためのイベント-始点、終点、色、太さ、および自動生成されたIDのプロパティを持つ単純なLineオブジェクトを作成します。イベントには、追加された行とレイヤーがあります。
- マウスを動かすと、1。で作成されたラインオブジェクトの終点が更新され、更新された形状とそのレイヤーをパラメータとして新しいイベントが発生します。
- マウスを上に向けると2.も起こります。
これらのイベントに登録するViewModelで、同等のWPFシェイプ(この場合はSystem.Windows.Shapes.Line)を修正キャンバスに追加し、シェイプが追加されたときにパラメーターを設定します。しかし、マウスを動かして描画された形状のライブプレビューを表示するときに、形状パラメーターを更新するのに堅牢なアイデアは思いつきません。
依存関係のプロパティを使用してみましたが、機能せず、やり過ぎのようでした(これらすべてのキャンバスに含まれるシェイプの数が原因です)。Lineも延長してみましたが、クラスが封印されているのでできません。また、描画される形状(サイズ変更、回転など)を操作する必要があります。