在编辑器中找不到 ResourceDictionary,在运行时工作
ResourceDictionary not found in editor, works at runtime
在我的 WPF 应用程序中,我正在尝试从外部程序集加载资源字典。
它在设计器中带有一条消息 "An error occured while locating ..." 的下划线(我的消息是法语的,所以不确定确切的英文版本)。
这是我 App.xaml 中的内容:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<ResourceDictionary Source="pack://application:,,,/MYNAMESPACE;component/Themes/MYFILE.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedTabControl.xaml" />
<ResourceDictionary Source="pack://application:,,,/MYNAMESPACE;component/Styles/MYFILE.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
带有 MYNAMESPACE 的两行消息带有下划线。我离开了 Mahapps 的,因为它们工作正常并且没有下划线。我删除了这些名称,因为它们与我的公司有关。
我在这里发现一些东西说 xaml 构建操作应该是 "Resource" (here),但是有人说这会导致问题。 Mahapps 中的 xaml 文件是 "Page"(我的也是)并且工作正常。
我的程序集是一个类型为 "User Control Library" 的项目。
我记得我曾为同样的问题苦苦挣扎。我不记得究竟是什么解决了我的问题,但这是我设置它的方式。
资源字典 (xaml) 的 Build Action 设置为 Page
。所以我很确定你的假设是正确的。
包含外部资源字典的项目是我正在使用的相同解决方案的一部分。所以我引用字典如下:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MY.NAMESPACE;component/MyExternalDictionary.xaml" />
<ResourceDictionary Source="/MY.NAMESPACE;component/MYFILE.xaml" />
<ResourceDictionary Source="MyInternalDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
这似乎对我有用,但我不记得这是否是我解决问题的全部方法。
因此,如果这仍然不起作用,也可能是由 缺少引用 引起的。如果您的外部资源词典之一引用了某些内容,则可能也必须将其添加到您当前的项目中。
在我的 WPF 应用程序中,我正在尝试从外部程序集加载资源字典。
它在设计器中带有一条消息 "An error occured while locating ..." 的下划线(我的消息是法语的,所以不确定确切的英文版本)。
这是我 App.xaml 中的内容:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<ResourceDictionary Source="pack://application:,,,/MYNAMESPACE;component/Themes/MYFILE.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedTabControl.xaml" />
<ResourceDictionary Source="pack://application:,,,/MYNAMESPACE;component/Styles/MYFILE.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
带有 MYNAMESPACE 的两行消息带有下划线。我离开了 Mahapps 的,因为它们工作正常并且没有下划线。我删除了这些名称,因为它们与我的公司有关。
我在这里发现一些东西说 xaml 构建操作应该是 "Resource" (here),但是有人说这会导致问题。 Mahapps 中的 xaml 文件是 "Page"(我的也是)并且工作正常。
我的程序集是一个类型为 "User Control Library" 的项目。
我记得我曾为同样的问题苦苦挣扎。我不记得究竟是什么解决了我的问题,但这是我设置它的方式。
资源字典 (xaml) 的 Build Action 设置为 Page
。所以我很确定你的假设是正确的。
包含外部资源字典的项目是我正在使用的相同解决方案的一部分。所以我引用字典如下:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MY.NAMESPACE;component/MyExternalDictionary.xaml" />
<ResourceDictionary Source="/MY.NAMESPACE;component/MYFILE.xaml" />
<ResourceDictionary Source="MyInternalDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
这似乎对我有用,但我不记得这是否是我解决问题的全部方法。
因此,如果这仍然不起作用,也可能是由 缺少引用 引起的。如果您的外部资源词典之一引用了某些内容,则可能也必须将其添加到您当前的项目中。