Как я использую ValueConverter с Привязкой данных в Winforms

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

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

11
задан Ian Ringrose 12 May 2017 в 10:18
поделиться

2 ответа

Вы можете использовать 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);
}
16
ответ дан 3 December 2019 в 05:33
поделиться

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

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

5
ответ дан 3 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: