2009-04-23 10 views
0

私はMVVM WPFアプリケーションを基本的に持っています。これは、配電ネットワークのための単線図デザイナーになることを基本としています。ユーザーコントロール付きキャンバスにあるMVVM

私は、変圧器、サーキットブレーカー、線、ケーブルが必要なキャンバスを持っています。

私の大きな問題はデザイン...どうすれば始めることができますか?

すべての要素のベースクラスであるIDesignerItemViewModelのObservableCollectionを含むDesignerView、DesignerViewModelについて考えてみましょう。しかし、この場合、ItemsControlを使用してキャンバスのコンテンツを自分のコレクションにバインドする必要がありますが、各要素のusercontrolを作成する必要はありませんが、DataTemplateの問題のほとんどは解決します(私は仮定します) 。 各要素は、モデルへのリンクを、リポジトリ内で永続化して、私の論理ツリーを維持します。

進め方についての任意のヒント、私は多くのDiagramCanvasの例を見てきましたが、それらのすべては、最もシンプルな長方形のような単純なアイテムを使用して...

答えて

0

マウロ、

素敵なアプローチが作ることができItemsControlのItemsPanel CanvasおよびDataTemplateのUI要素をViewModelのプロパティにバインドします。

DataTemplateのコンテンツはCanvasに置かれずItemPresenterの内側に配置されるため、これはうまくいかないようですがつまり、要素の型を定義するいくつかのプロパティに基づいてトリガ内のテンプレートを切り替えることによって、要素を視覚化するコントロールを作成できます。

次に、CanvasのChildrenをこれらのコントロールのコレクションにバインドするか、Canvas.Childrenコレクションをコードビハインドで手続き的に取り込むことができます。

+0

を最後の文は何です解決しようとしている。 CanvasオブジェクトのChildrenプロパティはバインド可能ではないようだし、コードビハインドでコレクションの変更を解決するのは面倒だと思われます。 各要素にusercontrolを使用する方法はありますか? –

0

私は約似ています。私はCANVASとしてLaysoutするItemscontrolを持っています。私のアイテムは、タイプUsercontrolからのプロパティPayLoadを持つShapeItemViewModelsです。 My ViewにはBorderと、プロパティペイロードにバインドされたContentPresenterがあります。 その後、自分の必要に応じてペイロードを注入します。接続/関係ある これは私も一つの問題を持っている ...私がしたいと私は私の項目を組み立てることができます... ここに私のスレッドを参照してください。

Diagramming in Silverlight MVVM- connecting shapes

関連する問題