0

つい最近、MVVMを使用してGUIを基盤となるモデルから切り離すことについて学びました。私は、現在のアプリケーションをMVVMに変換するためにできる限り多くのことを学ぶことになり、大部分は成功しました。次に、Blendで生成されたGUIを実際に取得し、VisualStudioで設計された現在のGUIの代わりに使用する方法を理解する必要があります。これを可能な限りシームレスにするためのリソースがWeb上に見つかりません。皆さんが何をして、あなたのために仕事をしてきたのか知りたいのですが。

私の究極の解決策は、実行時にメニューからスキンを選択し、ユーザーが選択した現在のスキンから別のスキンにすぐにGUIを変更できるようにすることです。 誰かがこれを行う方法を説明する投稿を私に指摘できますか?

私の現在の目標はそれほど野心的ではありません。新しいBlendGUIをVisualStudioプロジェクトに追加し、コンパイル時に新しいBlendGUIを表示できるようにしたいと考えています。古いGUIに戻りたい場合は、再コンパイルする必要があります。今のところ、それは大丈夫です。

BlendプロジェクトをVS2008ソリューションに追加し、スタートアップアプリケーションとして設定しました。これは問題なく機能します。アプリを実行すると、古いGUIの代わりに新しいGUIが表示されます。ここでの問題は、実際には別のフォルダー(元のスタートアップ・アプリケーションのbin \ Debugフォルダー)にあるDLLが必要なことです。 元のGUIをスタートアップアプリケーションとして残し、そのアプリコードビハインドで他のGUIをロードすることになっていますか?

また、それぞれのGUIには、ViewModelへの参照が必要です。私の場合、現在のGUIクラスでインスタンス化しただけです。Blend GUIの場合、GUIの1つだけがアクティブになるため、そこでも1つをインスタンス化しました。 これは、Unityフレームワークのようなものを使用する必要がある場所ですか?

一貫性のない可能性のあるすべての質問について申し訳ありませんが、ここからどのように進めるべきかよくわかりません。私は、MVVMがGUIの観点から進む方法であるということを自分自身に証明することに非常に近いように感じます(私はすでにテスト容易性ビットで販売されています)。

4

2 に答える 2

1

私が見たすべての例は、何らかの形式のResourceDictionaryスワッピングを使用してGUIの外観を動的に切り替えます。いくつかのリンク:

実行時にXAMLリソースディクショナリをロードする

WPFは実行時にテーマ/スタイルを変更します

お役に立てば幸いです。

于 2010-01-14T03:54:37.770 に答える
0

コードの一部で、現在実行中のアセンブリのパスを取得するために間違ったプロパティを使用していたという間違いを見つけました。私は今使っています

System.Reflection.Assembly.GetExecutingAssembly().Location

これは機能しますが、exeをBlendプロジェクトのbin\Debugフォルダーからメインアプリケーションのbin\Debugフォルダーにコピーした場合にのみ機能します。ビルド後のイベントを使用して、これに対応する必要があると思います。参照されているすべてのアセンブリが自動的にコピーされるため、過去数か月間.NETでの作業に甘んじていましたが、これを行う必要はありませんでした(以前のC ++のように)。コードビハインドをデバッグする場合は、Blendプロジェクトの設定で開始実行可能ファイルも設定する必要があります。これは、特にパスが同じに設定されていない別のコンピューターで作業する場合にも不便です。ここでの提案もいただければ幸いです。

于 2010-01-14T05:52:20.903 に答える