1

我一直在尝试在我的视图模型中加载资源字典 XAML 文件。我能够实例化它,并且调用它不会立即导致错误,但是在控制返回 UI 后,会弹出错误消息“错误 HRESULT E_FAIL 已从对 COM 组件的调用中返回”。

我正在执行以下操作:

  • ResourceDictionary 文件ViewModelsResources.xaml位于我MyApp/ViewModelsMyAppSilverlight 应用程序的根文件夹中
  • 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],则没有错误。任何帮助将非常感激。

4

1 回答 1

1

事实证明这确实像我描述的那样工作,但是您不能在资源字典中找到的模板中指定事件。我应该意识到这会导致问题,但 COM 让我失望了。为了解决对事件处理程序的需求,我使用了 Behaviors。有大量关于行为的读物。我从这里这里开始。

注意:如果有人认为我应该删除这个问题,因为它实际上按照建议的方式工作,请按此评论。我认为离开这可能会帮助尝试做与我相同的事情的人。

于 2012-08-22T18:26:14.417 回答