在某些情况下不会调用IValueConverter

时间:2012-08-07 10:02:24

标签: c# windows-phone-7 xaml ivalueconverter

我正在使用从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属性只在那里工作一样。

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

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

2 个答案:

答案 0 :(得分:1)

为转换器不工作的文本块设置DataContext="object",并调用值转换器。

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

答案 1 :(得分:0)

添加绑定源

使用类似的东西

Text="{Binding  Converter={StaticResource LocalizedStringsConventer} ,ConverterParameter=Wrong, Source=NULL}"