c# - 是否可以将数据绑定(bind)到 Silverlight 中的方法?

标签 c# silverlight data-binding

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

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

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)

能够直接使用它会很棒。

最佳答案

你可以使用 value converter然后将参数传递给它以查找资源。绑定(bind)到哪个属性并不一定重要,因为您的值转换器可以忽略该部分并仅使用传递的 ConverterParameter执行资源查找。

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

... SomeProperty="{Binding Converter={StaticResource MyAppResourceConverter},
                           ConverterParameter=SomePropertyResourceName}}" ...

关于c# - 是否可以将数据绑定(bind)到 Silverlight 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3195083/

相关文章:

C# - Silverlight - ItemControl,条件项模板

c# - WPF 重置按钮单击的焦点

c# - 将 ObservableCollection<XElement> 数据绑定(bind)到 ListBox?

c# - 按需 IEnumerable 绑定(bind)到 ListBox

c# - 我对 C# 接口(interface)成员的默认访问修饰符感到困惑

c# - 是否有标准的 .NET 方法来测试 SqlConnection 字符串是否有效?

c# - 在代码隐藏中从 XAML 创建控件?

c# - Wcf 服务仅在传输复杂对象时接收 null

XML 序列化 "There is an error in XML document (2, 2)"的 C# 错误

c# - 当客户端日历是非公历时,如何以公历格式获取 "DateTime.Now"?