WPF. Как в MVVM стиле биндить ListViewItem к List<>?

Рейтинг: 2Ответов: 1Опубликовано: 03.04.2015

Как можно в рамках подхода MVVM реализовать binding каждого ListViewitem(объекта ListView) элемента к коллекции IList<IElementProperty>? То есть я хочу получить возможность динамически управлять числом полей-свойств в элементах ListViewitem объекта ListView. Очевидно, что тогда число столбцов будет определяться в ран-тайм в области модели представления. Все элементы для одного ListView предполагаются с одинаковой структурой, но определяемой в ран-тайме перед заполнением самого ListView.

Ответы

▲ 1

Для таких задач есть стадартные API:

  • для динамического добавления свойств (а также методов и событий) - ICustomTypeDescriptor
  • для динамической генерации столбцов лучше воспользоваться DataGrid и событием автогенерации столбцов. В нем вы можете создать несколько столбцов и определить Binding для них на "виртуальные" свойства вашего прокси-объекта. При этом WPF уже знает как работать с объектом, реализующим интерфейс ICustomTypeDescriptor, и установка свойств будет работать "сама по себе".