IMO правильный способ сделать это состоит в том, чтобы заключить все источники данных в один объект, который похож на ваш пользовательский List<DataGridColumn>()
. Назовите это MultifunctionalSource
.
Этот новый объект будет содержать список столбцов, возможно, с методами добавления новых источников и их агрегирования. Возможно, при добавлении нового источника вы можете автоматически управлять списком столбцов.
MultifunctionalSource
отвечает за предоставление привязываемого источника данных.
Модель будет предоставлять объекты типа MultifunctionalSource
для просмотра.
В представлении у вас должен быть новый элемент управления, полученный из сетки данных, который будет понимать, как отображать объекты типа MultifunctionalSource
. Этот новый элемент управления, вероятно, будет вначале довольно простым, поскольку он может просто настроить свои столбцы на основе привязки.
MultifunctionalSource
, вероятно, должен возвращать список столбцов, которые он считает актуальными для отображения. Он также должен иметь возможность возвращать полный список столбцов, чтобы пользовательский интерфейс мог решать, какие столбцы актуальны на основе других критериев; таким образом сохраняя границы.