所有事情都发生在同一个VS项目中。我有一个独立的资源字典文件。当我尝试以编程方式加载它时,我收到错误
“无法创建未知类型'{clr-namespace:MyAssembly.Helpers} IsNullConverter”。
以下是我加载它的方式:
StreamResourceInfo stream = Application.GetResourceStream(new Uri(@"MyAssembly;component/Resources/Resources.xaml", UriKind.Relative));
this.dynamicResources = XamlReader.Load(stream.Stream) as ResourceDictionary;
这是资源字典:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:helpers="clr-namespace:MyAssembly.Helpers">
<helpers:IsNullConverter x:Key="IsNullConverter" />
Styles go here...
请注意,它与代码隐藏文件绑定,但它没有任何内容。资源文件的Build-Action设置为“Resource”。从今天早上起,这让我发疯,仍然不知道到底发生了什么......
帮助。 谢谢。
答案 0 :(得分:1)
Halelujah我把它弄出来了。我所要做的就是直接加载资源字典
Uri uri = new Uri(@MyAssembly; component / Resources / Resources.xaml“,UriKind.Relative); this.dynamicResources.Source = uri;
确保资源字典文件的Build Action设置为“Page”
\米/
答案 1 :(得分:0)
您的项目是否引用了程序集?如果没有尝试添加引用 - 如果您不想要依赖项,可以尝试加载程序集:
或者你可以在resourcedictionary中添加一个x:Class定义,并从程序集中实例化该类而不是加载xaml,并记得从构造函数中调用生成的InitializeComponent(),它将加载。
Is it possible to set code behind a resource dictionary in WPF for event handling?
如果ResourceDictionary和转换器与您加载的程序集在同一个程序集中,您的示例可以正常工作,据我所知:)