Как использовать ValueConverter с привязкой данных в Winforms - PullRequest
11 голосов
/ 16 апреля 2010

В WPF легко использовать ValueConverter для форматирования значений и т. Д. (В нашем случае преобразовать некоторые числа в другую единицу, например, в километрах к миль)

Я знаю, что это можно сделать в Winforms, но все мои поиски в Google просто приводят к результатам для WPF и Silverlight.

Ответы [ 2 ]

16 голосов
/ 16 апреля 2010

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

В противном случае вы должны присоединиться к Parse и Format событиям Binding объекта. К сожалению, это исключает использование конструктора для привязки для всех, кроме самых простых сценариев.

Например, допустим, вы хотели, чтобы TextBox был привязан к целочисленному столбцу, представляющему километры, и вы хотели визуальное представление в милях:

В конструкторе:

Binding bind = new Binding("Text", source, "PropertyName");

bind.Format += bind_Format;
bind.Parse += bind_Parse;

textBox.DataBindings.Add(bind);

...

void bind_Format(object sender, ConvertEventArgs e)
{
    int km = (int)e.Value;

    e.Value = ConvertKMToMiles(km).ToString();
}

void bind_Parse(object sender, ConvertEventArgs e)
{
    int miles = int.Parse((string)e.Value);

    e.Value = ConvertMilesToKM(miles);
}
5 голосов
/ 19 апреля 2010

Другим вариантом является наличие определенной формы ViewModel для формы, которая предоставляет данные в формате, который необходимо отобразить в форме. Вы можете легко достичь этого, используя AutoMapper и создав свой собственный Formatter .

Таким образом, вы получите полную поддержку и для дизайнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...