如何在数据绑定控件中使用数据绑定标识符来获取WPF中的特定资源

时间:2014-05-23 21:10:55

标签: .net wpf xaml data-binding resourcedictionary

我有数据绑定按钮,其内容(文本)应该从应用程序资源中的合并字典中检索。

但我不能硬编码资源的密钥,因为我不知道密钥。密钥需要以某种方式从数据绑定项中检索。

通常只需将按钮的文本绑定到如下属性:

<Button Content="{Binding Path=DisplayName}" ... />

但我需要从资源中取出按钮的文本,而按钮仍然像以前一样数据绑定:

<Application.Resources>
    <s:String x:Key="EnglishButtonText">Enter</s:String>  
</Application.Resources>

绑定的dataitem将包含属性public string Name{get;set;},其值为'EnglishButtonText'

这样的事情:

<Button Content="{DynamicResource{Binding Path=Name}}" ... />

可以这样做吗?

1 个答案:

答案 0 :(得分:0)

可以使用IValueConverter来实现,它将返回资源值。

转换器

public class ResourceLoopkupConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter,
                          CultureInfo culture)
    {
        return App.Current.Resources[value];
    }

    public object ConvertBack(object value, Type targetType, object parameter,
                              CultureInfo culture)
    {
        return Binding.DoNothing;
    }
}

XAML

<Button Content="{Binding Name,
                  Converter={StaticResource ResourceLoopkupConverter}}"/>

当然你必须在XAML中声明转换器的实例才能使用它。