2011-09-13 10 views
0

バインドされている新しいモデルを返します。ViewModelLocator.LocateForViewは、ないモデルContentControlには、私のようにXAMLでContentControlには定義されてい

私のViewModelは、プロパティが定義されており、ViewModelのコンストラクタで設定され、コンストラクタインジェクションを使用してインスタンスを作成します。

ビューはインスタンス化されますが、ViewModelで作成されたモデルにはアクセスできません。ビューのxaml.csコンストラクタからインスタンスを取得しようとすると新しいモデルが作成されたようです。

var model = Caliburn.Micro.ViewModelLocator.LocateForView(this) as DynamicDataGridViewModel; 

作成時にビューに関連付けられるモデルを正しく取得するにはどうすればよいですか?

答えて

0

ContentControlには、あなただけのContentControlにx:Name="ProductionGridに名前を付けることができます」と表示がインスタンス化されますが、私は で作成されたモデルにアクセスすることはできませんMicro:View.Model="{Binding ProductionGrid}"

を必要はありませんドッキングパネルに埋め込まれている場合ViewModelには、ビューのxaml.csコンストラクタからインスタンスを取得するために をしようとしたときに新しいモデルを作成しているようだ。あなたはViewModelには、インスタンス化されます意味

バインディングは機能しますか?私は見なければならないだろうが、CMがProductionGridからProductionGridViewを見つけるかどうかはわからないが、わからない。 ProductionGridViewModelとProductionGridViewが機能します。

xaml.csコンストラクタで何かをコーディングする必要はありません。実際には、xaml.csファイルを削除します。

+1

私はContentControlの名前パラメータを使用しようとしましたが、何らかの理由で動作しませんでした。ドッキングパネルは第三者です。 Viewは作成されますが、Viewコンストラクタからアクセスできるように早期にViewModelに「接続」されていません(実際にはそうすることはできませんでした)。 通常、私はxaml.csでコードを作成しようとしませんでしたが、私はコントロールを再利用しようとしていましたが、再書き込みはしませんでした。 私はViewMwareをViewAwareから派生させ、OnViewAttachedを使用して私が必要とすることをしました。私はとにかく多くのコントロールを書き直さなければならなかった。 – tracstarr

関連する問題