xaml - 如何在 Windows Phone 8 中使用 ResourceDictionary 作为 StaticResource

标签 xaml windows-phone-8 resourcedictionary valueconverter

我有一个 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/

相关文章:

wpf - 如何向用户控件添加更多资源

c# - 如何在运行时将已在 XAML ResourceDictionary 中定义的路径多次添加到 WPF 表单?

c# - 如何访问 RadGridView 单元格内的子文本框

c# - Windows Phone 7 : How to parse Bezier Path string like in XAML?

c# - wpf datagridcell 聚焦时进入 editmodus

javascript - Windows Phone 8.1 Javascript 应用程序 - 使用相机

windows-phone-8 - 在 WP8 上实现滑动事件

wpf - 在 WP8.1 XAML 中自动向 TextBox 添加换行符

c# - 如何从 C# 调用 JavaScript - Cordova/PhoneGap

c# - 从 XAML 加载 ResourceDictionary 也会将文件加载到内存中