Xaml 资源本地化:使用x:Uid引用另一个程序集';s资源
我正在编写一个win8应用程序,将使用内置的资源管理系统:Xaml 资源本地化:使用x:Uid引用另一个程序集';s资源,xaml,windows-8,localization,visual-studio-2012,winrt-xaml,Xaml,Windows 8,Localization,Visual Studio 2012,Winrt Xaml,我正在编写一个win8应用程序,将使用内置的资源管理系统:resw文件和我的XAML代码中的x:Uid标记 所以我创建了一个文本框,如下所示: 我使用ResourceTest.Text条目在程序集中创建了相应的资源文件,它工作正常:在运行时显示正确的文本 现在,为了便于维护,我想将我的所有resx文件移动到另一个C#库中。因此,我将资源文件放在一个全新的项目中,并从主程序集中引用这个新程序集 但这会导致上一个构造失败(不显示文本) 但是,如果使用以下代码从side程序集(称为Resource
resw
文件和我的XAML代码中的x:Uid
标记
所以我创建了一个文本框
,如下所示:
我使用ResourceTest.Text
条目在程序集中创建了相应的资源文件,它工作正常:在运行时显示正确的文本
现在,为了便于维护,我想将我的所有resx文件移动到另一个C#库中。因此,我将资源文件放在一个全新的项目中,并从主程序集中引用这个新程序集
但这会导致上一个构造失败(不显示文本)
但是,如果使用以下代码从side程序集(称为ResourcesLibrary)内部以编程方式检索资源值,则可以正确获取字符串:
static ResourceLoader ResourceLoader=null;
公共静态字符串GetString(字符串resourceName)
{
if(resourceLoader==null)
resourceLoader=新的resourceLoader(“ResourcesLibrary/Resources”);
返回resourceLoader.GetString(resourceName);
}
在处理程序集外资源时,如何启用x:Uid
机制?
我在
x:Uid
中尝试了一些东西,例如ResourcesLibrary/Resources/resourcestest
,但没有成功。根据我的理解,如果资源保存在.resx文件中,则不能使用x:Uid
如果使用.resw文件,则可以访问字符串,无论它们驻留在哪个程序集中
正如您在问题中提到的“ResourcesLibrary/Resources/ResourceTest”一样,可以访问它们。很长一段时间以来,我都遇到过同样的问题。但是在进行了一点测试之后,我通过在XAML代码中编写整个资源路径来解决这个问题 大概是这样的:
<TextBlock x:Uid="/ResourcesLibrary/Resources/ResourceTest" />
不幸的是,这个答案来得很晚,但可能对其他人有帮助。问了这个问题后,你找到解决办法了吗?我现在也面临同样的问题。不,我退回到使用相同的程序集,没有时间进行调查。实际上,我们已经结束了使用此工具为resw资源文件生成代码隐藏类的过程,即使resw在另一个程序集中,它也能很好地工作:感谢您回来发布此消息。