在运行时无法找到资源字典文件
我正在开发一个用户控件并在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:'Set property'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>
正确的语法是/ assemblyname; component ...而不是逗号,因为你有。 – sexta13 2014-04-17 01:33:29
我感谢人..我不知道WPF与相对路径有什么样的问题,我刚开始怀疑我的存在。 – LuckyLikey 2017-06-23 12:21:00
您好,没有斜杠的尝试,我们使用斜杠时,生成操作是内容或其他,但对于ResourceDictionary生成操作是页。
<ResourceDictionary Source="Themes/Classic.xaml"/>
<ResourceDictionary Source="Themes/Generic.xaml"/>
我希望这会有所帮助。这些资源字典必须具有其他名称,因为在同一项目的主题文件夹中Generic.xaml用作默认值,并且可以在不合并它的资源的情况下访问其资源。
注意,按照http://*.com/questions/17083370/why- do-modify-project-output-directories-cause-ioexception-was-unhandled的输出路径也是一个问题。 – nietras 2013-11-11 16:53:40