Как форматировать столбец DataGrid в коде, используя привязку
-
26-10-2019 - |
Вопрос
Я не могу понять, как добавить параметр формата в следующий столбец DataGrid. Мне нужно показать номер с двумя десятичными очками.
У меня есть DataGrid Silverlight, который я добавляю столбцы динамически. Я создаю столбец и применяю динамическую привязку (что, как я знаю, работает)
public static DataGridTextColumn CreateFloatColumn(int index, string fieldName, string header, string description)
{
DataGridTextColumn column = new DataGridTextColumn();
column.Header = header;
column.HeaderStyle = BuildColumnHeaderStyle(description);
Binding newBinding = new Binding("floatValuesList[" + index + "]");
column.Binding = newBinding;
column.CellStyle = BuildCellStyle(fieldName, description);
return column;
}
Теперь мне также нужно отформатировать значение. В этом случае это показанное значение поплавка. Как применить форматирование к привязке? На этом этапе все, что я хочу, это число и две десятичные очки, но я бы хотел, чтобы он был немного гибким, и позвольте мне показать переменное количество десятичных очков.
(Редактировать: удаленная концепция IvalueConverter, чтобы сохранить чище вопроса)
Решение
Я ненавижу отвечать на свой собственный вопрос, и я думаю, что я вводил в заблуждение в том, как я добавил потенциальное решение, используя конвертер ценностей в мой первоначальный вопрос - очень извините за это. Решение оказалось простым. Вы передаете строку формата вместе с привязкой.
column.Binding.StringFormat = "0.00";
Вот полное решение
public static DataGridTextColumn CreateFloatColumn(int index, string fieldName, string header, string description)
{
DataGridTextColumn column = new DataGridTextColumn();
column.Header = header;
column.HeaderStyle = BuildColumnHeaderStyle(description);
column.Binding = new Binding("floatValuesList[" + index + "]");
column.Binding.StringFormat = "0.00";
column.CellStyle = BuildFloatCellStyle(fieldName, description);
return column;
}
Другие советы
Вы должны быть в состоянии сделать: newBinding.ConverterParameter = "formatString";