我有数据绑定按钮,其内容(文本)应该从应用程序资源中的合并字典中检索。
但我不能硬编码资源的密钥,因为我不知道密钥。密钥需要以某种方式从数据绑定项中检索。
通常只需将按钮的文本绑定到如下属性:
<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}}" ... />
可以这样做吗?
答案 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中声明转换器的实例才能使用它。