Silverlight Value Converter - PullRequest
       12

Silverlight Value Converter

0 голосов
/ 28 июня 2011

У меня работает конвертер значений для входящего строкового значения из базы данных, чтобы установить соответствующий значок для пола. Входящее значение должно быть либо M, либо F, и любой из них будет отображать мужской или женский значок соответственно. Привязка работает до некоторой степени в том смысле, что изображение появляется, но оно отображает только один набор значков для любого значения.

Код преобразователя значения следующий:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
  var gender = (string)value;
  Uri uri;
  uri = gender == "F" ?
          new Uri("../Resources/Icons/female_user.png", UriKind.Relative) :
          new Uri("../Resources/Icons/male_user.png", UriKind.Relative);
  return uri;
}


public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
  throw new NotImplementedException();
}

и XAML выглядит следующим образом

 <Image Margin="8" Width="35" Height="35"
        VerticalAlignment="Top" HorizontalAlignment="Center"
        Source="{Binding Gender, Converter={StaticResource genderConverter}}" />

Ресурс цитируется в usercontrol.resources, и я полагаю, что все правильно связано. Так почему же конвертер постоянно возвращает только одно значение?

Ответы [ 2 ]

0 голосов
/ 28 июня 2011

Все, что мне было нужно, это пол. Трим (), чтобы избавиться от всех пробелов.

var gender = value.ToString();
        try
        {
            return gender.Trim() == "F" ? "../Resources/Icons/male_user.png" : "../Resources/Icons/female_user.png";
        }
        catch (Exception)
        {
            return "";
        }

Вот обо всем позаботился, и это работает. Спасибо за ответы и "дох!" хотя возможности.

0 голосов
/ 28 июня 2011

Попробуйте это ...

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {

                var gender = (string)value;
                Uri uri;
                uri = gender == "F" ?
                        new Uri("../Resources/Icons/female_user.png", UriKind.Relative) :
                        new Uri("../Resources/Icons/male_user.png", UriKind.Relative);
                BitmapImage img_Gender = new BitmapImage(uri);
                return img_Gender;

        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return null;
        }
...