c# - 如何将数组绑定到自定义索引器?
问题描述
我有一个带有索引器的单例本地化类。您可以像这样访问它:
Localize.Current[String key]
我还有一个自定义的 Binding 类,它可以转换string
为对该索引器的调用:
{Translate MyKey}
OneWay
这将在我的绑定上设置模式( ),源为Localize.Current
(单例)以及路径:
[$key$]
$key$
评估到哪里MyKey
。然后将其本地化并替换为本地化值。现在我想用附加参数参数化这个绑定。所以我这样做了:
Localize.Current[String key, params String[] parameters]
{Translate MyKey, MyParameter1, MyParameter2}
我不知道如何在绑定中设置路径,我试过:
new PropertyPath("[$key$, (0)]", values) // where values is String[] from Translate
这不会触发索引器。Localize.Current[String key, String parameter]
如果我添加一个,但不是任意数量的参数,它会触发索引器。我需要一个包含对数组的引用的路径,例如:
new PropertyPath("[$key$, $array_placeholder$], values)
在任何地方都找不到任何东西。既不是在文档中,也不是在谷歌中。任何人都有经验如何实现这一目标?放什么代替$array_placeholder$
?
解决方案
带有路径和参数的PropertyPath
构造函数是这样定义的。
public PropertyPath (string path, params object[] pathParameters);
pathParameters
参数是一个数组,它为object
您的path
. 这意味着为了将您的values
数组传递给属性路径中的索引零,它必须是参数数组中的第一个值。然后,将调用适当的索引器。
new PropertyPath("[$key$, (0)]", new object[] {values});
如果values
直接传递,路径中的索引零将获得该数组的第一个值a string
。
推荐阅读
- angular - package.json 中未反映 Angular 依赖项
- vue.js - 如何使用 Vee-Validate 验证选择选项
- php - Wordpress 错误日志不显示特定错误的位置
- html - 影响子 div 的 Wordpress 混合混合模式
- firebase - 通过firebase功能将文件上传到firebase存储的问题
- webgl - 渲染到立方体贴图的非零 mip 级别
- php - PHP函数按年检索两个日期之间的天数
- java - Linux 和 Windows JDBC 时间戳精度的差异?
- javascript - 为什么Firebase在createUserWithEmailAndPassword之后获取uid时返回未定义
- ruby-on-rails - 通过字段组合在表中保留最后/最新记录