0

別の XAP ファイルから Web サーバーからコントロールを動的にロードしています。インスタンスを作成した後、それらをタブページに表示したいと思います。コントロールは、CM を使用する MMVM コントロールにすることも、非 MVVM 標準コントロールにすることもできます。

タブを試す前に、次を使用してページ上にコントロールを動的に表示することをテストしました。

<ContentControl Name="TestControl" />

テスト コントロールは、動的にロードされるコントロールの新しいインスタンスを作成することによって設定される Type UserControl のプロパティです。これにより、ビューが見つからないというエラーが表示されます。非 MVVM コントロールの場合、もちろんビューはありません。非 MVVM コントロールをロードするにはどうすればよいですか?

テスト コントロールを MVVM コントロールにしようとしましたが、ビューを読み込めませんというエラーが表示されます。そのようなインスタンスは作成されないので理にかなっています。ビュー モデル以外に動的に読み込まれるビューのインスタンスを作成する場合、CM がそれを見つけられるようにこれを「追加」するにはどうすればよいですか?

最後になりましたが、これを Silverlight のタブ コントロールにバインドするにはどうすればよいですか? アイデアは、それぞれが個別のタブ ページにレンダリングされるユーザー コントロール (プラグイン) のコレクションを持つことです。

助けてくれてありがとう。

(MVVMを使用せずにすぐにこれを完了しましたが、MVVMがすべての複雑さに値するかどうかはまだわかりません)

4

1 に答える 1

0

「mvvm コントロール」などというものはありません。MVVM は単なるパターンであり、コントロール タイプではありません。基本的に、Caliburn では UserControls や Views を直接操作する必要はありませんが、ViewModel の最初のアプローチを選択すると、Caliburn フレームワークが一致するビューを見つけることができるはずです。あなたの場合、XAP ファイルを動的にロードしているため、Caliburn が View/ViewModel を検索する (そしてそれらをバインドする) アセンブリのリストにそれらを追加する必要があり、これは IAssemblySource インターフェイスを介して行われます。ここのドキュメントによると:

では、AssemblySoure.Instance とは何ですか? これは、Caliburn.Micro がビューを探す場所です。アプリケーション中にいつでもこれにアセンブリを追加して、フレームワークで使用できるようにすることができますが、Bootstrapper にもそれを行うための特別な場所があります。

于 2012-10-10T22:23:05.607 に答える