Привязка источника изображения к ресурсам изображения - PullRequest
0 голосов
/ 17 марта 2011

Я создаю приложение, в котором я представляю изображение, источник которого изменяется при изменении какого-либо значения int.Чтобы сделать это, я пытаюсь привязать свойство «Source» к изображению:

<Image Source="{Binding Path=Gas, Converter={StaticResource GasToImageSource}}"/> 

(Gas - это int-значение)И конвертер:

public class GasToImageSource : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int gas_value = (int)value;
        if (gas_value <=500 )
            return SomeNameSpace.Properties.Resources.GAS_INDICATOR1;
        if (gas_value <=1000)
            return SomeNameSpace.Properties.Resources.GAS_INDICATOR2;
        if (gas_value <= 1500)
            return SomeNameSpace.Properties.Resources.GAS_INDICATOR3;

        return SomeNameSpace.Properties.Resources.GAS_INDICATOR4;
    }

   ...
}

Но по какой-то причине это не работает.Что не так с моим переплетом?

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Чтобы использовать строку, вы можете изменить привязку следующим образом:

Source="{Binding Path=Gas, StringFormat={}/your_namespace;component/{0}, Converter={StaticResource GasToImageSource}}"
0 голосов
/ 17 марта 2011

Вам необходимо предоставить ImageSource объект, а не строку.Попробуйте что-то вроде этого:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    int gas_value = (int)value;
    string res = SomeNameSpace.Properties.Resources.GAS_INDICATOR4;
    if (gas_value <=500 )
        res = SomeNameSpace.Properties.Resources.GAS_INDICATOR1;
    if (gas_value <=1000)
        res = SomeNameSpace.Properties.Resources.GAS_INDICATOR2;
    if (gas_value <= 1500)
        res = SomeNameSpace.Properties.Resources.GAS_INDICATOR3;

    BitmapImage img = new BitmapImage();
    img.BeginInit();
    img.UriSource = new Uri(res, UriKind.Relative);
    img.EndInit();
    return img;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...