数年前の MSDN フォーラムの古い投稿で見つけた実装を使用して構築しましたが、最近、もう一度検索してBindingListViewという sourceforge プロジェクトを見つけました。見た目はかなりいいです。ハッキングされたバージョンを置き換えるためにまだ引き込んでいません。
ナゲットパッケージ:Equin.ApplicationFramework.BindingListView
コード例:
var lst = new List<DemoClass>
{
new DemoClass { Prop1 = "a", Prop2 = "b", Prop3 = "c" },
new DemoClass { Prop1 = "a", Prop2 = "e", Prop3 = "f" },
new DemoClass { Prop1 = "b", Prop2 = "h", Prop3 = "i" },
new DemoClass { Prop1 = "b", Prop2 = "k", Prop3 = "l" }
};
dataGridView1.DataSource = new BindingListView<DemoClass>(lst);
// you can now sort by clicking the column headings
//
// to filter the view...
var view = (BindingListView<DemoClass>)dataGridView1.DataSource;
view.ApplyFilter(dc => dc.Prop1 == "a");