wpf - 无法在运行时找到资源字典文件

标签 wpf themes

我正在开发一个用户控件并在 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/

相关文章:

css - 是否有一个简单的代码可以为 wordpress 中的所有元素添加边框?

asp.net - 从项目中的一个 ASP.NET 页面中删除主题

css - 在 WordPress 中使用多个样式表

angular - 使用 Angular 2/Meteor 动态更改主题

WPF DataGrid 好教程?

c# - 如何从函数返回一个 Action ?

wpf - 如何将启动 uri 属性设置为 wpf 项目中文件夹中的另一个窗口

c# - MVVM ListBox - 根据其索引更改项目的背景

c# - 在代码隐藏中将数据网格列宽设置为星号

java - android更改选择器和选项卡下划线的默认颜色