c# - XAML 绑定(bind)到带有参数的静态方法

标签 c# wpf xaml

我有一个像下面这样的静态类:

public static class Lang
{
   public static string GetString(string name)
   {
      //CODE
   }
}

现在我想在 xaml 中以绑定(bind)的形式访问这个静态函数。 有没有这样的方法例如:

<Label Content="{Binding Path="{x:static lang:Lang.GetString, Parameters={parameter1}}"/>

或者是否有必要为每个可能的参数创建一个 ObjectDataProvider?

希望有人能帮助我。提前致谢!

最佳答案

我也有这个需求。我使用转换器“解决”了(如建议的 here )。

首先,创建一个返回翻译字符串的转换器:

public class LanguageConverter : IValueConverter
{
  public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
    if (parameter == null)
      return string.Empty;

    if (parameter is string)
      return Resources.ResourceManager.GetString((string)parameter);
    else
      return string.Empty;
  }

  public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
    throw new NotImplementedException();
  }
}

然后将其用于 XAML:

<Window.Resources>
  <local:LanguageConverter x:Key="LangConverter" />
</Window.Resources>

<Label Content="{Binding Converter={StaticResource LangConverter}, 
                         ConverterParameter=ResourceKey}"/>

问候。

关于c# - XAML 绑定(bind)到带有参数的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15520579/

相关文章:

c# - 如何使用多态+重载改进这种方法以减少IS(类型检查)?

c# - ASP.Net 查看文件夹内有一个文件夹 - 如何创建 Controller

c# - 当焦点 WPF 元素被移除时,键盘焦点去哪里了?

c# - 获取窗口大小

c++ - 检查 Windows 8 中的设备(PC/平板电脑)是什么

c# - 如何创建类的对象,其中类名存储在 C# 中的字符串变量中

c# - 如何删除事件?

c# - 在 .NET 3.5 中从 C# 更新 XAML GridView

c# - Silverlight 更新绑定(bind)

c# - 在通用 Windows 应用程序中获取键盘状态