我一直在尝试在我的视图模型中加载资源字典 XAML 文件。我能够实例化它,并且调用它不会立即导致错误,但是在控制返回 UI 后,会弹出错误消息“错误 HRESULT E_FAIL 已从对 COM 组件的调用中返回”。
我正在执行以下操作:
- ResourceDictionary 文件
ViewModelsResources.xaml
位于我MyApp/ViewModels
的MyApp
Silverlight 应用程序的根文件夹中 ViewModelsResources.xaml
标记为 Build Action:Content
, Copy to Output Directory:Copy always
, Custom Tool: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]
,则没有错误。任何帮助将非常感激。