How to pass a static value to IValueConverter in XAML

Viewed 16567

I would like to use static texts fetched from a web service in my WP7 app. Each text has a Name (the indetifier) and a Content property.

For example a text could look like this:

Name = "M43";
Content = "This is the text to be shown";

I would then like to pass the Name (i.e. the identifier) of the text to an IValueConverter, which would then look up the the Name and return the text.

I figured the converter to look something like this:

public class StaticTextConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value != null)
        {
            return App.StaticTexts.Items.SingleOrDefault(t => t.Name.Equals(value)).Content;
        }

        return null;
    }
}

Then in the XAML:

<phone:PhoneApplicationPage.Resources>
    <Helpers:StaticTextConverter x:Name="StaticTextConverter" />
</phone:PhoneApplicationPage.Resources>

...

<TextBlock Text="{Binding 'M43', Converter={StaticResource StaticTextConverter}}"/>

However, this does not seem to work and I am not sure that I pass in the value to the converter correctly.

Does anyone have some suggestions?

4 Answers
Related