У меня есть GridView
с некоторыми столбцами, отображающими материалы. Все значения модели представления сохраняются в кг, для некоторых представлений следует преобразовывать и отображать их в литрах. Что легко сделать одним способом, используя IMultiValueConverter
.
public object Convert(object[] values, ...){
var valueInKg = (double)values[0];
var density = (double)values[1];
return valueInKg/density;
}
Теперь у меня проблемы с обратным преобразованием. Я пытался сохранить входные значения (плотность) в конвертере, но у меня есть один экземпляр и, следовательно, иногда неправильные значения плотности. Я нашел этот подход x:shared="false", но хотите установить преобразователь в класс, производный от System.Windows.Data.MultiBinding
.
public class MyBinding : MultiBinding {
public MyBinding(){
Converter = new MyConverter();
}
}
Я предполагал, что это приведет к созданию отдельного экземпляра для каждой привязки, но это не так. Как я могу этого добиться?
РЕДАКТИРОВАТЬ: Как было предложено mm8 в этом ответе, проблема заключается в экземпляре привязки. При определении привязки к GridViewColumn
в его шаблоне ячейки я буду использовать конструктор только один раз для каждого столбца. Итак, вопрос в том, как я могу это изменить - возможно ли это вообще?
IValueConverter
нельзя установить с помощью привязки. - person ChriPf   schedule 13.03.2017