我正在尝试使用语句
动态添加xaml资源文件Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("resources/leaf_styles.xaml", UriKind.Relative) });
这是抛出异常,找不到资源'resources / leaf_styles.xaml'。
我将leaf_styles.xaml文件添加到资源文件夹下的项目中,BuildAction设置为“Content”,CopyAlways设置为True。我仍然得到这个错误。有人可以帮我指出什么不对吗?
其他信息 -
如果我将其作为绝对位置,它正常工作。
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri(@"D:\foo\trunk\bin\resources\leaf_styles.xaml", UriKind.Absolute) });
答案 0 :(得分:26)
最后,它奏效了。这是我做的,
将Uri模式更改为
var foo = new Uri("pack://siteoforigin:,,,/resources/leaf_styles.xaml", UriKind.RelativeOrAbsolute);
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = foo });
答案 1 :(得分:7)
要加载内容文件,您可以调用Application类的GetContentStream方法,传递标识所需内容文件的pack URI。
结帐
http://msdn.microsoft.com/en-us/library/aa970494.aspx#Content_Files
修改强>
我成功地这样做了
Uri uri = new Uri("Resources/MyDict.xaml", UriKind.Relative);
StreamResourceInfo info = Application.GetContentStream(uri);
System.Windows.Markup.XamlReader reader = new System.Windows.Markup.XamlReader();
ResourceDictionary myResourceDictionary =
(ResourceDictionary)reader.LoadAsync(info.Stream);
Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary);
答案 2 :(得分:0)
我遇到了同样的“缺少资源问题”并且抓了几个小时。然后我意识到我的程序集名称包含点(。)并更改了资源程序集名称,再次测试并且它有效。这是一个16x16 png图像文件,我想加载。但是我看到点缀的汇编名称会导致soma案例出错,并且不会导致其他情况出错。
我在两种情况下都使用相同的代码,但结果不同。我不知道它是否是一个wpf错误。