В WPF это просто в использовании ValueConverter для форматирования значений и т.д., (в нашем случае преобразовывают некоторые числа в другую единицу, например, км к милям),
Я знаю, что это может быть сделано в Winforms, но весь мой Googleing просто поднимает результаты для WPF и Silverlight.
Вы можете использовать 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);
}
Другой вариант - иметь конкретную ViewModel для формы, которая предоставляет данные в формате, который необходимо отображать в форме. Вы можете легко добиться этого, используя AutoMapper и создав свой собственный Formatter .
Таким образом, вы также получите полную поддержку дизайнера.