You're right. I'm new to MVVM and got confused there. Binding is key to MVVM and I can still bind my view and viewmodel and programmatically add columns.
I did this and set the CellTemplate for my special column and it works for me.
I saw your blog post
about subclassing GridViewDataColumn to create a custom column.
Is that the preferred way to do this, versus my use of a CellTemplate?
I tried it but used a TextBlock as my FrameworkElement. I set the foreground to Purple and fontweight to Bold. But when I ran it I only saw the Bold... no Purple. Why would that be?
Programmatically setting the CellTemplate displayed the desired foreground color as expected, so for now I'm running with that.