我一直在尝试在我的 View 模型中加载资源字典XAML文件。我能够实例化它,并且对其调用不会导致立即错误,但是在控件返回到UI后,将弹出错误消息“从对COM组件的调用返回了错误HRESULT E_FAIL”。
我正在执行以下操作:
ViewModelsResources.xaml
中的MyApp/ViewModels
,其中MyApp
是我的Silverlight应用程序ViewModelsResources.xaml
被标记为Build Action:Content
,复制到输出目录:Copy always
,自定义工具:MSBuild:Compile
ResourceDictionary VMResources = new ResourceDictionary()
{
Source = new Uri("/ViewModels/ViewModelsResources.xaml", UriKind.Relative)
};
Template1 = VMResources["myTemplate"] as ControlTemplate;
(与上面的代码示例相同的类)调试显示
VMResources
和Template1
被分配了良好的值。我不知道为什么这会引发有关COM组件的错误,但我已将其隔离到引用此ResourceDictionary时。如果我删除引用VMResources[x]
的行,则没有错误。任何帮助将非常感激。
最佳答案
事实证明这确实如我所描述的那样起作用,但是您不能在资源字典中的模板中指定事件。我应该已经意识到这会造成问题,但是COM却把我甩了出去。为了解决对事件处理程序的需求,我正在使用“行为”。关于行为,有大量的读物。我启动了here和here。
注意:如果有人认为我应该删除此问题,因为它确实按照建议的那样工作,请就此发表评论。我认为离开这可能会帮助某人尝试做与我相同的事情。
关于c# - ViewModel中的引用ResourceDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12077071/