Expression Blendを使用できるように、MVVMアプリでView / ViewModelバインディングを行う方法
-
06-07-2019 - |
質問
MVVM Visual Studioテンプレートを使用する場合 、ViewModelsはApp.xaml.csのビューのDataContextsに次のようにバインドされます:
MainView mainView = new MainView();
mainView.DataContext = new MainViewModel();
mainView.Show();
複合アプリケーションライブラリを使用する場合、ビューとViewModelがBootstrapper / Container / ServerLocatorなどでバインドされます
いずれにせよ、Expression Blendでこれらのプロジェクトを開き、View XAMLファイルを開くと、 Expression BlendはどのViewModelがどのViewに属しているかを認識しません。上記のインスタンス。
もちろん、XAMLで DataObjectProvider を設定して、Expression Blendがそのビューのデータを取得する場所を知ることができますが、これはビューがハードウェアに固定されているため、MVVMと分離パターンを壊します特定のViewModel。 これは、デザイナーが通常、少しデモ以上のプロジェクトでExpression Blendを使用する方法ですか?
では、MVVMパターンを使用していて、Expression Blendを使用するデザイナーがいる場合、Expression BlendがどのViewModelがどのビューに属しているかを認識できるように、View / ViewModelバインディングをどのように維持しますか?
解決
Blendは、アプリケーションを実行しなくてもコードをロードして実行します。 DesignerProperties.GetIsInDesignMode(...)がビューコンストラクターまたは別のより適切なメソッドである場合、サンプルのDataContextをロードします。