我有一个 Windows Phone 7 应用程序,我正在尝试创建它的 Windows Phone 8 版本。
在应用程序中,我在 XAML 文件中定义了一个 ResourceDictionary,如下所示:
<ResourceDictionary
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">
<sys:String x:Key="AppName">My App Name</sys:String>
<!-- etc. -->
</ResourceDictionary>
此 ResourceDictionary 在 App.xaml 中引用为:
<!--Application Resources-->
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Assets/Constants.xaml"/>
<!-- etc. -->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
然后是最简单的部分:
<TextBlock x:Name="ApplicationTitle" Text="{StaticResource AppName}"/>
上面的内容在 Windows Phone 7 中工作得很好,但是,在 Windows Phone 8 中还有一个额外的 Application.Resources
项目是 <myNamespace:LocalizedStrings x:Key="LocalizedStrings"/>
当我有我的应用程序时,它不会编译,因为它提示
Each dictionary entry must have an associated key.
所以我将代码更改为:
<!--Application Resources-->
<Application.Resources>
<myNamespace:LocalizedStrings x:Key="LocalizedStrings"/>
<ResourceDictionary x:Key="MainDictionary">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Assets/Constants.xaml"/>
<!-- etc. -->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
现在我有另一个问题。我的应用程序可以编译,但运行时会抛出 XamlParseException
:
Cannot find a Resource with the Name/Key AppName
这一切的发生都是因为LocalizedStrings
资源。有人可以帮助实现这一目标吗?
顺便说一句,我对值转换器也有同样的问题;如果他们的做法不同,如果有人也能提供帮助,我将不胜感激。
提前致谢。
最佳答案
将本地化字符串条目移至顶级应用程序资源字典中。
<!--Application Resources-->
<Application.Resources>
<ResourceDictionary x:Key="MainDictionary">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Assets/Constants.xaml"/>
<!-- etc. -->
</ResourceDictionary.MergedDictionaries>
<myNamespace:LocalizedStrings x:Key="LocalizedStrings"/>
</ResourceDictionary>
</Application.Resources>
关于xaml - 如何在 Windows Phone 8 中使用 ResourceDictionary 作为 StaticResource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14067135/