2

少し前に、Blend で作成した GUI と Visual Studio で作成した GUI の切り替えに関する質問を投稿しました。Blend プロジェクトを VS2008 プロジェクトに追加し、スタートアップ アプリケーションを変更して再コンパイルすることで、正常に動作するようになりました。これにより、完全に異なる GUI を持つ 2 つのアプリケーションが作成されますが、まったく同じ ViewModel および Model コードが使用されます。私はそれでかなり幸せでした。

Laurent Bugnion の MVVM Light Toolkit について学んだので、同じバックエンド コードで複数の GUI をサポートするこのプロセスを可能にする彼の努力を大いに活用したいと思います。問題は、ツールキットがこれを容易にするか、それとも以前のやり方で行き詰まっているかということです。

私は MIX10 の彼のビデオを見て、オンラインでいくつかの記事を読みました。ただし、別の DLL をロードすることで、ユーザーがその場で動的に GUI を切り替えることができるクリーンな方法があることを示すものはまだ見たことがありません。VS2008 と Blend 3 用の MVVM テンプレートがありますが、アプリケーション用に両方のタイプのプロジェクトを作成し、VS2008 ソリューションから特定のファイルを参照する必要がありますか?

更新 Laurent のサイトでいくつかの情報を読み直しましたが、VS2008Blendで同じソリューションを開くことがテンプレートの要点であることを忘れていたようです。とにかく、この新しい視点では、テンプレートは実際には単一の GUI を使用することを意図しているように見えます。ほとんどの場合、Blend で完全に設計されている可能性が高く (VS2008 によるデバッグの利便性を考慮して)、2 つの異なる ViewModels を使用できます。設計時、および実行時用です。

したがって、私の質問に対する答えは、以前のソリューションと MVVM Light Toolkit を組み合わせて使用​​したいということのように思えます。前者を使用すると、コア コードの周りに複数の異なる GUI を作成できますが、後者を使用すると、設計時の ViewModel を使用して、Blend で派手な GUI を簡単に設計できます。誰でもこれについてコメントできますか?

4

2 に答える 2

2

以前の質問とこの質問を確認しましたが、プロジェクトを Blend と Studio で作業するように切り替えて、最終的に 2 つの異なる UI になるという話は聞いたことがありませんでした。これは、Blend を構築したときの MSFT の意図ではなかったと思います。代わりに、まったく同じプロジェクトとコード ファイルを両方の IDE で開く可能性 (および MSFT のさまざまなチームと行ったすべての議論) は、実際には両方の環境で編集できるアプリケーションを 1 つだけにすることを意図していたことを示唆しています。

最終的な目標は、UI の編集に使用できるさまざまなツール (XAML、Visual Studio デザイナー、Blend) を用意することだと思います。プロジェクトでの役割 (開発者、デザイナー、インテグレーター) とツールの能力に応じて、どちらかを選択できます。

これは、テンプレートをまったく切り替えないという意味ではありません。アプリケーションの種類 (たとえば、SL4 デスクトップ アプリケーションまたは WinPhone7 アプリケーションの間) に応じて、同じ ViewModel (および以下) のコードを使用しますが、ファイルにはまったく異なる UI を適用します。このビデオでその方法をデモしました: http://channel9.msdn.com/posts/kreekman/TechDays-2010-Understanding-the-Model-View-ViewModel-pattern/

これは、私が MIX で行った講演と同じですが、15 分延長して、ViewModel とモデル ファイルを再利用する方法を示しますが、WinPhone7 ではまったく異なる UI を使用します。

別のアプリケーションは、ウィンドウのサイズが変更されたときにテンプレートを切り替えて (WPF で頻繁に使用されますが、Silverlight にも適用できます)、詳細を減らしたり、画面サイズごとに異なるレイアウトを表示したりします。

この返信があなたを混乱させないことを願っています :) 実際、議論を続ける前に、それについてあなたのコメントを聞きたいです.

乾杯、ローラン

于 2010-05-25T08:10:37.413 に答える
0

これにはMEFedMVVMが適していると思います。シンプルで、他のフレームワークと組み合わせることができます。

于 2010-05-24T18:35:37.733 に答える