Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Биндинг Dictionary<enum, int>


Автор: gambit 20.12.2010, 10:45
Привет. Хочу спросить как лучше сделать.
Код

enum lya_lya { table, chair, cup}

Имеется Dictionary<lya_lya, int>.

Его я биндю к DataGrid. Все честно работает, выводится:
lya_lya | aaa
----------------
table    | 5
chair    | 3
cup      | 6

НО мне, надо, что бы значения из enum, были написаны по русски

lya_lya | aaa
----------------
Стол    | 5
Стул    | 3
Чашка | 6

Я могу конечно сделать элементы енума написанными по русски, но мне кажется, это не лучшей идеей. Ваши предложения.

Автор: jonie 20.12.2010, 14:58
TypeConverter вам нужно написать http://www.codeproject.com/KB/cs/enumdescconverter.aspx

Автор: gambit 20.12.2010, 15:28
jonie, спасибо, посмотрим

Автор: gambit 21.12.2010, 02:11
Попробовал, все ок. Спасибо. Но если у кого буду еще варианты, пож. Пишите. Этот вариант работает через рефлексию, что не самый айс

Автор: CYBERDREAM 21.12.2010, 10:30
а как без нее?
как уже обсуждалось можешь обертку написать, я делал статический женерик класс, который мне без проблем уже все выдавал в нужном виде 
http://base.vingrad.ru/view/3150-Opisanie-Enum

Автор: Kefir 24.12.2010, 01:34
gambit, напиши отдельный IValueConverter для твоего энума. Соответственно там просто надо через switch смотреть какой из энумов пришёл и переводить его. А-ля так:
Код


public object Convert(object value, ...)
{
  if(value is lya_lya) 
  {
    var lya = (lya_lya)value;
    switch(lya)
    {
      case lya_lya.table: return "Стол";
      // ........... и далее по тексту
    }
  }
}

На ConvertBack можешь поставить просто return Binding.DoNothing; (оба эти метода приходят вместе с интерфейсом).
Ну и как обычно - прикручиваешь к биндингу этот конвертер. И будет счастье smile

Добавлено через 1 минуту и 20 секунд
P.S. И никакого рефлекшна!  smile 

Автор: jonie 24.12.2010, 10:19
Kefir, так проще имхо занести значения в resx и выдавать их по ключу, составленому например так: "enum_" + enumValue;

Автор: Kefir 27.12.2010, 11:15
jonie, куда заносить это уже дело десятое smile Я-то просто написал как эти значения отдавать на использование.

А если о хранении - тут вообще где угодно можно хранить. Я лично просто пользуюсь системой локализации и такие вещи дёргаю из интерфейса - а что там на заднем плане крутится (resources, БД или XML) - это меня не касается smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)