我正在开发一个用户控件并在 ElementHost 中使用它。我定义资源字典如下:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes/Classic.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
在我的 VS 资源管理器中,我有这个
Project (the user control library)
|_ Themes
|__ Generic.xaml (Build Action = Page)
|__ Classic.xaml (Build Action = Page)
没有编译错误,VS 设计器似乎拿起了 Classic.xaml 中定义的资源
但是,它在运行时崩溃,但出现以下异常:
System.Reflection.TargetInvocationException:调用的目标已抛出异常。 ---> System.Reflection.TargetInvocationException:调用的目标已抛出异常。 ---> System.Reflection.TargetInvocationException:调用的目标已抛出异常。 ---> System.Windows.Markup.XamlParseException: '设置属性 'System.Windows.ResourceDictionary.Source' 引发异常。行号“16”和行位置“18”。 ---> System.IO.IOException: 找不到资源“themes/classic.xaml”。
这是怎么回事?
最佳答案
我最终不得不使用包含程序集名称的语法......不要问我为什么
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/assemblyname;component/Themes/Classic.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
关于wpf - 无法在运行时找到资源字典文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691503/