首页 > 解决方案 > 如何将数组绑定到自定义索引器?

问题描述

我有一个带有索引器的单例本地化类。您可以像这样访问它:

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$

标签: c#wpfdata-binding

解决方案


带有路径和参数的PropertyPath构造函数是这样定义的。

public PropertyPath (string path, params object[] pathParameters);

pathParameters参数是一个数组,它为object您的path. 这意味着为了将您的values 数组传递给属性路径中的索引零,它必须是参数数组中的第一个值。然后,将调用适当的索引器。

new PropertyPath("[$key$, (0)]", new object[] {values});

如果values直接传递,路径中的索引零将获得该数组的第一个值a string


推荐阅读