wpf&验证应用程序块>消息本地化> messageTemplateResource名称和类型

时间:2010-04-28 15:00:39

标签: wpf validation localization resources enterprise-library

我正在尝试在 WPF应用程序中为我的数据对象编写验证规则。我在配置文件中写它们,到目前为止它们工作正常。

我对如何使用messageTemplateResourceName和messageTemplateResourceType本地化消息感到困惑。我所知道的是,字符串可以在资源文件中写入,给定名称并由该名称引用。我明白了,但我无法做到这一点。

<ruleset name="Rule Set">
    <properties>
        <property name="StringValue">
            <validator lowerBound="0" lowerBoundType="Ignore" upperBound="25"
          upperBoundType="Inclusive" negated="false" messageTemplate=""
          messageTemplateResourceName="msg1" messageTemplateResourceType="Resources"
          tag=""  
type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.StringLengthValidator, Microsoft.Practices.EnterpriseLibrary.Validation"
          name="String Length Validator" />
         </property>
    </properties>
</ruleset>

资源文件在哪里,我传递给messageTemplateResourceType的值是什么? 我已经尝试在shell项目的资源文件中编写消息,但没有尝试检索值。我只获得默认的内置消息。

我试过

  • messageTemplateResourceType = “typeof运算(参考资料)”
  • messageTemplateResourceType = “资源”
  • messageTemplateResourceType = “Resources.resx”
  • messageTemplateResourceType = “typeof运算(壳牌)”
  • messageTemplateResourceType = “壳”
  • messageTemplateResourceType =“壳牌, 版本= 1.0.0.0,文化=中立, 公钥=空“

我还尝试在shell项目中添加新资源文件,并将资源文件添加到数据对象的库中。我完全没有想法有没有人有任何建议?我甚至没有与资源文件的想法结合,所以如果有其他方法来本地化这些消息,我很想知道!

感谢

1 个答案:

答案 0 :(得分:0)

您需要创建自己的资源文件,然后将messageTemplateResourceType属性指向您的完全限定资源类型。只要资源文件可以在运行时加载,你应该没问题。

<ruleset name="Rule Set">
  ...
  messageTemplateResourceName="msg1"  
  messageTemplateResourceType="My.Fully.Qualified.ResourceType, My.AssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
  ...
</ruleset>

另一种方法是使用messageTemplate作为键并编写自定义代码,以根据messageTemplate键(来自资源文件或数据库或存储它的任何其他位置)查找实际的本地化字符串)。