我最近偶然發現WPF ListView
控件似乎限制了對其項目進行排序的能力。具體來說,我在嘗試使SortDescription
識別嵌套屬性(屬性屬性)時遇到了很大的麻煩。WPF ListView - 按嵌套屬性排序
對於由propreties直接的排序,下面一行應該做的工作:
listView.Items.SortDescriptions.Add(new SortDescription("MyProperty",
ListSortDirection.Ascending));
事實上它很適合我。但是,因爲我的ListView
的ItemSource
是(強類型)DataTable
,所以某些列綁定到該行的嵌套屬性(即Row.OtherTableRow.SubProperty
綁定路徑樣式) - 這是ADO.NET DataSet適用於分層數據庫的方式。
我想什麼做的是這樣的:
listView.Items.SortDescriptions.Add(new SortDescription("MyProperty.SubProperty",
ListSortDirection.Ascending));
但遺憾的是該行拋出ArgumentException
:
「訂單」式沒有名爲「Row屬性[ID ]',所以不能對數據收集進行排序。
奇怪的是,我沒有任何問題綁定到嵌套屬性。實際上,這些字段在ListView
中顯示得非常好......也不會將PropertyGroupDescription
添加到listView.GroupDescriptions
中給我帶來嵌套屬性的任何問題 - 它只是SortDescriptions
!
這是WPF/ListView
控件的限制嗎?作爲框架的一部分,我有沒有辦法獲得支持,還是我會在那裏運氣不好?如果我不幸的是,而且這種不一致是不可避免的,我會非常感謝,如果有人可以提出一個黑客或解決方案嵌套屬性的這種情況。我已經嘗試了一些想法,但都取得了最小的成功。
注:我意識到一個ORM可能很好地解決了我的問題,但恐怕這對於我正在開發的當前項目來說根本不可行。簡單的ADO.NET DataSets將不得不做。
乾杯。如果它能很好地涵蓋其他高級場景,我可以看看那本書。 :) – Noldorin 2009-07-23 21:48:49