2010-10-22 33 views
0

我有一个XAML字符串表,工作时,我需要从我的XAML控件中引用它。如何从代码访问XAML文件中的字符串表?

但是我也可以通过访问它来用于代码的其他部分 - 比如我的模型中的验证消息。由于您无法将资源文件添加到silverlight,我必须使用它。

有人必须知道我需要打电话来获取资源文件,最好是强类型,这样智能感可以拯救我的健忘。

资源文件中定义

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:system="clr-namespace:System;assembly=mscorlib"> 

    <system:String x:Key="test">test</system:String> 
</ResourceDictionary> 

回答

0

您可以使用索引来获得这个。一旦你的资源字典的参考,你可以使用:

string test = (string)resources["test"]; 

有关详细信息,请参阅Referencing Resources from Code

+0

没有办法让智能感觉自动完成?我真的很讨厌用字符串把事情搞砸。所以容易出错。但谢谢你的答案。 – 2010-10-22 16:05:51

+0

@John:不是。它不是类型安全的,也不是“真正的”类型 - 更像是一个字典(因此,ResourceDictionary)。 – 2010-10-22 16:06:20

+0

够公平的。谢谢 – 2010-10-22 16:06:57

1

而不是在XAML中列出字符串,为什么不直接使用resource files (RESX)?通过这种方式,Visual Studio将使用(publicresxfilecodegenerator)创建您的资源包装器,并且您将能够摆脱魔术字符串,无论是在代码还是XAML中。

+0

这是我试图做的 - 我非常喜欢从内部字符串分离UI字符串的想法 - 通常是错误消息而不是工具提示,但是您没有Silverlight项目设置中的资源选项卡(您知道你在哪里建立选项等), – 2010-10-23 11:37:46

+0

你必须手动添加一个或几个RESX文件到你的项目。当你这样做时,Visual Studio使用RESXFILECODEGENERATOR在你的文件周围创建一个wapper,然后你可以使用该文件作为一个静态类,然后使用属性。 – Murven 2010-10-23 15:12:11

+0

谢谢你,你是对的。我希望我已经问过你已经回答的情节,因为这是我放弃之前想要的东西。 – 2010-10-25 09:24:57

相关问题