我正在使用从 Web 服务中获取的文本集合,这些文本应该用于各种控件。
在我看来,最简单和最动态的方法是使用 anIValueConverter
来获取给定的文本,如下所示:
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 中,我将文本 ('Name') 的 ID 提供给转换器:
<phone:PhoneApplicationPage.Resources>
<Helpers:StaticTextConverter x:Name="TextConverter" />
</phone:PhoneApplicationPage.Resources>
<TextBlock Text="{Binding Converter={StaticResource TextConverter}, ConverterParameter=M62}" />
然后要更改某些控件的文本,所要做的就是更改参数中的 ID 或从某个 Web 界面更改文本本身。
我的问题是
值转换器仅在已设置的某种DataTemplate
上下文中被调用,就好像该属性仅在那里工作一样。ItemSource
Binding
每当我在其他任何地方使用此方法时,都不会调用值转换器。
有谁知道我可能做错了什么?