2012-01-02 6 views
1

私は、異なるプロパティを含むProductViewModelクラスを持っています。 次に、ProducViewModelクラスを継承するProductDetailsViewModelクラスがあります。私がこのようにしている理由は、正しいバインディング環境を取得し、前のビューからのプロパティの重複を避けるためです。MVVMモデルを他のモデルから継承することはできますか?

これを行うことを許可されているか、それぞれのViewModelを明確に分離する必要がありますか?

コードThrough ProductDetailsViewModelビューからProductViewModelクラスのプロパティにアクセスできますが、ProductDetailViewのdatacontextをProducDetailsViewModelクラスに設定し、継承されたクラス内で定義されているインスタンスのプロパティURIをバインドするとバインディングが発生しないようです。

答えて

1

あなたもこれを行うことができますが、私はそれらを分離し、依存性注入を使用する方がよいと思います。

ProductViewModelを作成し、実装して実装し、これをProductDetailsViewModelに挿入します。

MVVM + WPF + DI

MSDN DI

+0

は、なるほど、あなたはサンプル、今私は、そのためのサンプルを持っていないが、Googleがあまりにもあなたの友人であるとがあることをやっていないし、悲しいことに、それらの依存性の注入 – serge

+0

で動作したことがないん多くの例を学ぶことができます。手動で、あるいはフレームワークでDIを行うこともできます。 Unity Prismは見てみるといいですが、私は彼らが理解するのが少し複雑かもしれないと思うのです。 – BigL

1

はい、これは結構です、とそれだけで動作するはずですので、私は私のWPFのプロジェクトでは、このすべての時間を行います。いくつかの提案:

  • アプリケーションのデバッグ時に出力ウィンドウを確認できますか?入力ミスタイプのxamlバインディングを示唆するバインディングエラーはありますか?
  • xamlで特定のタイプにバインドするDataTemplateを使用していますか? ProductViewModelではなくProductDetailsViewModel?
  • 基本タイプ(ProductViewModel)がINotifyPropertyChangedを実装していますか?
  • ProductViewModelおよびProductSetailsViewModelのすべてのプロパティは、直接入力された文字列プロパティ名でPropertyChangedイベントを発生させますか?

敬具、

+0

はいDataContextが正しく配置されていないように見えるため、バインディングエラーが発生します。 – serge

+0

詳細については、私はここに投稿しています:http://social.msdn.microsoft.com/Forums/en/wpf/thread/6a1e2ddf-1eec-4339-9174-659de61f1d4b – serge

+0

あなたのユーザーコントロールが ' "vm:ProductViewModel"である祖先を持っています。 UserControlsの祖先はビジュアルツリー内の親であるため、DataContextがProductViewModelに設定されているツリーの上位の祖先を探す必要があります。 – BigL

関連する問題