【发布时间】:2016-11-10 13:05:22
【问题描述】:
我有一个名为 EditorResources.xaml 的 Resource Dictionary,它包含以下代码:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:editors="clr-namespace:MyCompany.Editors">
<DataTemplate x:Key="PasswordEditorDataTemplate">
</DataTemplate>
</ResourceDictionary>
但是当我在一个类中包含这行代码时:
private EditorResources res = new EditorResources();
它不会编译我的项目。我没有在.NET IDE 中显示任何Errors List 视图,但是当我查看我的Output 视图时,它显示以下错误:
错误 CS0246:找不到类型或命名空间名称“EditorResources”(您是否缺少 using 指令或程序集引用?)
但是,我不认为缺少引用,因为资源字典和类都在同一个项目(同一级别)中,我可以清楚地看到 EditorResources 类型突出显示为 Type 和 IntelliSense 踢当我点击我的“。”时,正如预期的那样。键并显示与Resource Dictionary 相关的属性,即.MergeDictionaries 等...
更新:
如果像我一样,您已将资源字典 (editorresources.xaml) 存储在子文件夹 (Editors) 中,并且您的程序集称为“MyCompany.Activity.Shared”,例如,不要忘记包含组件部分中的子文件夹,以便在调用@DrewNoakes 提供的代码时,可以毫无问题地调用以下内容:
var res = new ResourceDictionary
{
Source = new Uri("/MyCompany.Activity.Shared;component/editors/editorresources.xaml",
UriKind.RelativeOrAbsolute)
};
一旦你有了你的对象,你就可以通过代码访问你的 DataTemplates 或其他。
【问题讨论】:
-
您是否尝试清理项目并重新构建它或重新启动VS?
-
拥有
EditorResources.xaml文件并不意味着您可以实例化一个类EditorResources。你知道如何在代码中使用资源字典吗? (不知道为什么你会需要这个......)