Csharp/C#教程:动态加载资源字典文件到wpf应用程序会出错分享


动态加载资源字典文件到wpf应用程序会出错

我正在尝试使用该语句动态添加xaml资源文件,

Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("resources/leaf_styles.xaml", UriKind.Relative) }); 

这是抛出exception, 无法找到资源’resources / leaf_styles.xaml’。

我将leaf_styles.xaml文件添加到资源文件夹下的项目中,BuildAction设置为“Content”,CopyAlways设置为True。 我仍然得到这个错误。 有人可以帮我指出什么错?

附加信息 –

更新

如果我将它作为绝对位置,它正常工作。

 Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri(@"D:footrunkbinresourcesleaf_styles.xaml", UriKind.Absolute) }); 

最后,它奏效了。 这是我做的,

  1. 经过’ https://msdn.microsoft.com/en-us/library/aa970069.aspx 。
  2. 将Uri模式更改为

     var foo = new Uri("pack://siteoforigin:,,,/resources/leaf_styles.xaml", UriKind.RelativeOrAbsolute); Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = foo }); 

要加载内容文件,可以调用Application类的GetContentStream方法,传递标识所需内容文件的pack URI。

查看

https://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); 

我遇到了同样的“缺少资源问题”并且抓了几个小时。 然后我意识到我的程序集名称包含点(。)并更改了资源程序集名称,再次测试并且它有效。 这是一个16×16 png的图像文件,它想要加载。 但我发现点缀的程序集名称会导致soma情况出错,并且不会导致其他情况的错误。

我在两种情况下都使用相同的代码,但结果不同。 我不知道它是否是一个wpf错误。

上述就是C#学习教程:动态加载资源字典文件到wpf应用程序会出错分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/950467.html

(0)
上一篇 2021年11月17日
下一篇 2021年11月17日

精彩推荐