Я нашёл решение проблемы: WPF поддерживает биндинг к итерируемым структурам (массивы, списки, словари,
ObservableCollection
и т. д.), однако простой передачей аргумента сделать это не получится. Нужен параметр
PropertyPath(bindingObject, parameter)
.Конструкция для Binding примерно такая:
for (DateTime i = startDate; i != endDate; i = i.AddDays(1))
{
dateDic.date[i] = _rnd.Next(1, 10).ToString();
DgForm.Columns.Add(new DataGridTextColumn()
{
Header = i.ToString("dd.MM.yyyy"),
Binding = new Binding()
{
Path = new PropertyPath("date[(0)]", i)
}
} );
}
В данном случае мы ориентируемся на дату, поэтому логичнее всего использовать
Dictionary<DateTime, string>
. Можно также использовать словари с ключём
string
или массивы, для чего можно создать инкрементируемую переменную.