是否可以将数据绑定到Silverlight中的方法?

时间:2010-07-07 13:24:46

标签: c# silverlight data-binding

我们有一个不使用传统资源文件的动态语系统;通过语言管理器库从数据库中获取资源。基于遗留(VB6)解决方案,它根据控件标记属性中的资源名称进行语言控制。在页面初始化之后,我们启动了一个方法,该方法接受LayoutRoot并递归它的子项应用从控件有一个标记的字符串中查找的字符串。这被证明是笨拙的,递归例程变成了一个怪物,以迎合不同控件的微妙之处,我想改为使用数据绑定来代替应用字符串。

我意识到我可以为每个控件声明要绑定的属性,但这将涉及大量代码,我希望有更好的方法。有没有办法绑定到方法,传递参数。我设想了一个像这样的方法。

public string GetResource(string resourceName)
{
  string resource = <fetch resource from language manager>;

  if (String.IsNullOrEmpty(resource))
  {
    return resourceName;
  }
  else
  {
    return resource;
  }
}

我们的应用程序中已经有一个静态方法用于此检索,它具有以下签名。

public static Resource(string resourceName, string defaultValue)

能够直接使用它会很棒。

1 个答案:

答案 0 :(得分:4)

您可以使用value converter然后将参数传递给该资源以查找资源。绑定所属的属性并不一定重要,因为您的值转换器可以忽略该部分并只使用传递的ConverterParameter来执行资源查找。

然后,您可以在App资源中创建资源转换器的实例,并在整个应用程序中使用它。

... SomeProperty="{Binding Converter={StaticResource MyAppResourceConverter},
                           ConverterParameter=SomePropertyResourceName}}" ...
相关问题