Я использую стандартный .NET DataGrid, как это:призма/MVVM: связывание столбцов в DataGrid
<DataGrid ItemsSource="{Binding Datensaetze}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="my col 1" Binding="{Binding MyCol1}"/>
<DataGridTextColumn Header="my col 2" Binding="{Binding MyCol2}"/>
<DataGridTextColumn Header="my col 3" Binding="{Binding MyCol3}"/>
</DataGrid.Columns>
</DataGrid>
Это работает хорошо. Теперь я хочу определить столбцы в ViewModel, и вместо установки фиксированных столбцов в xaml я хочу сгенерировать их на лету. Однако, если я попытаюсь связать столбцы с чем-нибудь, я получаю сообщение об ошибке:
DataGrid.Columns - свойство readonly и не может быть связано.
Есть ли способ динамически связывать столбцы DataGrid с чем-то в коде?
Я использую этот штраф, но я столкнулся с проблемой, когда мне нужно обновить ObservableCollection на фоне потока (Я использую диспетчер для этого). Вышеприведенный код затем падает в делегате CollectionChanged с ошибкой «Вызывающий поток не может получить доступ к этому объекту, потому что ему принадлежит другой поток». Любые предложения, что я могу сделать? – 2013-01-30 15:55:46