我正在使用从Web服务获取的一组文本,这些文本应该用于各种控件。
在我看来,最简单,最有活力的方法是使用IValueConverter
获取给定的文字,如下所示:
public class StaticTextConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (parameter != null && parameter is string)
{
return App.StaticTexts.Items.SingleOrDefault(t => t.Name.Equals(parameter)).Content;
}
return null;
}
}
然后在XAML中我将文本ID('Name')提供给转换器:
<phone:PhoneApplicationPage.Resources>
<Helpers:StaticTextConverter x:Name="TextConverter" />
</phone:PhoneApplicationPage.Resources>
<TextBlock Text="{Binding Converter={StaticResource TextConverter}, ConverterParameter=M62}" />
然后要更改某些控件的文本,所有必须做的就是更改参数中的ID或从某个Web界面更改文本本身。
只有在设置了DataTemplate
的某种ItemSource
上下文中才会调用值转换器,就像Binding
属性只在那里工作一样。
每当我在其他任何地方使用此方法时,都不会调用值转换器。
有没有人知道我可能做错了什么?
答案 0 :(得分:1)
为转换器不工作的文本块设置DataContext="object"
,并调用值转换器。
此解决方法将在您的方案中发挥作用。
答案 1 :(得分:0)
添加绑定源
使用类似的东西
Text="{Binding Converter={StaticResource LocalizedStringsConventer} ,ConverterParameter=Wrong, Source=NULL}"