ビュー モデルにリソース ディクショナリ XAML ファイルを読み込もうとしています。それをインスタンス化することができ、それを呼び出してもすぐにエラーは発生しませんが、制御が UI に戻った後、「COM コンポーネントへの呼び出しからエラー HRESULT E_FAIL が返されました」というエラー ポップアップが表示されます。
私は次のことをしています:
- ResourceDictionary ファイルは、Silverlight アプリケーションのルート フォルダーの場所
ViewModelsResources.xaml
にあります。MyApp/ViewModels
MyApp
ViewModelsResources.xaml
ビルド アクション:Content
、出力ディレクトリにコピー:Copy always
、カスタム ツール:とマークされています。MSBuild:Compile
- ResourceDictionary オブジェクトがインスタンス化されます (このコードは、リソース ディクショナリ ファイルと同じフォルダー内のクラスにあります)。
ResourceDictionary VMResources = new ResourceDictionary() { Source = new Uri("/ViewModels/ViewModelsResources.xaml", UriKind.Relative) };
- オブジェクトは、x:Key 値に基づくインデックスを介して参照されます
Template1 = VMResources["myTemplate"] as ControlTemplate;
(上記のコード サンプルと同じクラス) 。
デバッグは、 と に適切な値が割り当てられていることを示していVMResources
ますTemplate1
。なぜこれが COM コンポーネントに関するエラーをスローするのかはわかりませんが、この ResourceDictionary が参照されるときにそれを分離しました。参照している行を取り出してVMResources[x]
もエラーはありません。どんな助けでも大歓迎です。