1

我正在使用从 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上下文中被调用,就好像该属性仅在那里工作一样。ItemSourceBinding

每当我在其他任何地方使用此方法时,都不会调用值转换器。

有谁知道我可能做错了什么?

4

2 回答 2

1

为您的文本块设置DataContext="object"转换器不起作用并且将调用值转换器。

此解决方法将在您的场景中发挥作用。

于 2012-08-07T13:46:02.527 回答
0

添加绑定源

使用类似的东西

Text="{Binding  Converter={StaticResource LocalizedStringsConventer} ,ConverterParameter=Wrong, Source=NULL}"
于 2015-05-13T13:18:12.880 回答