【发布时间】:2017-05-30 15:32:10
【问题描述】:
我一直在开发 WPF 应用程序,并且遇到了一些与我的 App.XAML 文件的 Application.Resources 元素中定义的资源有关的相当奇怪的行为。
我真的只需要在我的 ResourceDictionary 中定义一个字符串资源,我尝试使用以下 XAML:
<Application x:Class="MyClass.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Application.Resources>
<sys:String x:Key="htmlHelpFilePath">.\Help\glossary.chm</sys:String>
</Application.Resources>
</Application>
然后尝试使用以下代码访问它:
ResourceDictionary resourceDictionary = App.Current.Resources;
string htmlHelpFile = (string)resourceDictionary["htmlHelpFilePath"];
不幸的是,这导致htmlHelpFile 被设置为空。调试器还显示resourceDictionary 的键集为零。
我开始玩弄,发现只需将另一个资源添加到我的 Application.Resource XAML 元素中就可以正确填充字典,所以我最终解决了:
<Application.Resources>
<sys:String x:Key="htmlHelpFileName">glossary.chm</sys:String>
<sys:String x:Key="htmlHelpFileDirectory">.\Help\</sys:String>
</Application.Resources>
此解决方案按预期工作,我已继续我的工作,但我绝对对为什么这种行为以它发生的方式发生感到困惑。我对 XAML 配置的 WPF 应用程序的内部工作原理的了解非常基础,我很想知道这种奇怪行为的原因。
【问题讨论】:
-
第二种情况下如何检索资源?
-
@Sinatr 是的,当我尝试访问包含这两个资源的资源时,我在实际 C# 代码中收到了预期的字符串
-
您使用的是哪个 .NET Framework 版本?
-
@IIVic 我在这个项目中使用(并且仅限于)3.5
-
是的,声誉……还有劳动力。不,jk。我会写一个答案 :) 顺便说一句,我再次检查了 Microsoft Connect 问题——它被关闭为“无法修复”... :(
标签: c# wpf xaml resourcedictionary