10

我正在编写一个 win8 应用程序,并将使用内置的资源管理系统:我的 XAML 代码中的resw文件和x:Uid标签。

所以我创建让我们TextBox这样说:

<TextBlock Style="{StaticResource HeaderTextStyle}" x:Uid="ResourceTest"/>

我在我的程序集中用一个ResourceTest.Text条目创建了相应的资源文件,它工作正常:在运行时显示正确的文本。

现在,我想将我所有的 resx 文件移动到另一个 C# 库以进行维护。所以我把资源文件放在一个全新的项目中,并从主程序集中引用这个新程序集。

但这会导致先前的构造失败(不显示文本)。

但是,如果我使用以下代码从侧面程序集(称为 ResourcesLibrary)以编程方式检索资源值,我会正确获取字符串:

static ResourceLoader resourceLoader = null;
public static string GetString(string resourceName)
{
    if (resourceLoader == null)
        resourceLoader = new ResourceLoader ("ResourcesLibrary/Resources");
    return resourceLoader.GetString (resourceName);
}

x:Uid在处理装配外资源时如何启用该机制?

我尝试了一些事情,x:Uid例如ResourcesLibrary/Resources/ResourceTest但没有运气。

4

2 回答 2

14

很长一段时间我都有同样的问题。但是经过一点测试后,我通过在 XAML 代码中编写资源的整个路径来解决它。

像这样的东西:

<TextBlock x:Uid="/ResourcesLibrary/Resources/ResourceTest" />

不幸的是,这个答案来得很晚,但它可以帮助其他人。

于 2015-01-03T01:41:04.903 回答
0

根据我的理解,如果资源保存在 .resx 文件中,则不能使用 x:Uid 。

如果您使用 .resw 文件,则可以访问字符串,无论它们位于哪个程序集中。

可以像您在问题中提到的那样访问它们,例如“ResourcesLibrary/Resources/ResourceTest”

于 2014-07-21T07:20:40.767 回答