Какой лучший метод динамического указания столбцов DataGrid в элементе управления Silverlight DataGrid во время выполнения в соответствии с шаблоном MVVM?
Я бы хотел привязать свойство «DataGrid.Columns» к свойству в моей ViewModel, чтобы, если пользователь добавляет / удаляет столбцы, я просто обновляю свойство ViewModel, и DataGrid изменится. Проблема в том, что свойство DataGrid.Columns не может быть привязано (я не думаю).
Поскольку это свойство недоступно, а сам элемент управления DataGrid не доступен на уровне ViewModel, мой текущий подход заключается в том, чтобы выйти за пределы шаблона MVVM для этой конкретной реализации и зафиксировать определенные события в коде программной части View с использованием класса Messenger MVVM Light, а затем поговорите напрямую с элементом управления DataGrid для достижения этой возможности. Я знаю, что это общее утверждение этого подхода без деталей, но есть ли более простой способ ... или, может быть, не намного проще, но лучший способ, который немного лучше придерживается шаблона MVVM?
Меня сводит с ума, что свойство Columns элемента управления DataGrid не может быть привязано ... кажется такой простой вещью.
К вашему сведению - прежде чем будет предложено использовать AutoGenerateColumns = True, класс, привязанный к каждому элементу в коллекции, привязанной к DataGrid.ItemsSource, не имеет индивидуальных свойств для определения того, что привязано к столбцам ... это свойство коллекции, которое содержит столбцы, чтобы они оставались полностью динамичными, чтобы исключить конкретный путь. Кроме того, обработка AutoGeneratingColumns и использование e.Cancel для отображения / скрытия столбцов также сомнительны по той же причине (я думаю).