私が書きたいコードは次のようになります。
IEnumerable<SomeModel> items = GetTheItems();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = BuildTheDataSource(items);
また、データ グリッドはヘッダーに並べ替えグリフを表示し、ユーザーがそれらをクリックして並べ替えることができるようにします。
私がこれまでに持っていた最も有望なリードは、この回答で提案された SortableBindingList でしたが、そのソリューション (およびその他) は手動で作成された列に対してのみ機能するようです。
アップデート
さて、卵は今私の顔にあります!SortableBindingList は機能しますが、私は典型的な大失敗を犯しました。
void Bind(List<Model> items)
{
this.items = new SortableBindingList<Model>(items);
// oops! "items" is a List<T>... what I really wanted was
// "this.items" which is a SortableBindingList<T>
dataGridView1.DataSource = items;
}