我想排序列表綁定到WPF數據網格的清單<>。在第一次加載時,它是完全未排序的,但是當您單擊標題時,它應該在升序和降序之間切換。奇怪的是,列表<>排序,當我重新綁定列表<>到Itemssource,並刷新等...它仍然顯示升序。但是當我設置一個斷點並查看ItemsSource中的內容時,這些項目會被排序?!它不會出於任何原因顯示在數據網格中。任何想法如何發生?排序後不工作的WPF數據網格刷新
的DataGrid的SortingEvent(LibraryView)
private void LibraryView_Sorting(object sender, DataGridSortingEventArgs e)
{
var sortDirection = e.Column.SortDirection;
switch (sortDirection)
{
default:
case ListSortDirection.Descending: //not needed, but makes things clearer
sortDirection = ListSortDirection.Ascending;
break;
case ListSortDirection.Ascending:
sortDirection = ListSortDirection.Descending;
break;
}
_manager.SortLibrary(e.Column.SortMemberPath, sortDirection);
//LibraryView.Items.Clear(); //tried this
LibraryView.ItemsSource = null; //tried this
LoadLibrary();
LibraryView.Items.Refresh(); //tried this
}
調用LoadLibrary:
private void LoadLibrary()
{
if (_manager.CheckLibrary())
{
LibraryView.ItemsSource = _manager.GetLibrarySongs();
}
}
排序本身:
public void SortLibrary(string member, ListSortDirection? sortDirection)
{
PropertyDescriptor prop = TypeDescriptor.GetProperties(typeof(Song)).Find(member, true);
switch (sortDirection)
{
default:
case ListSortDirection.Descending: //not needed, but makes things clearer
_library.Songs = _library.Songs.OrderByDescending(s => prop.GetValue(s)).ToList();
Debug.WriteLine("Sorting descending!!!!");
break;
case ListSortDirection.Ascending:
_library.Songs = _library.Songs.OrderBy(s => prop.GetValue(s)).ToList();
Debug.WriteLine("Sorting ascencding!!!!");
break;
}
}
我知道有噸對這個話題,但一切我來了橫跨,仍然不能解決這個問題。 我對WPF沒有太多的經驗,所以如果我做錯了什麼,或者做得不好,請告訴我。 在此先感謝!
我已經看過它,我用下面一行將我的泛型列表綁定到datagrid:LibraryView.SetValue(DataGrid.ItemsSourceProperty,_manager.Library.Songs);如何使用ICollectionView將視圖的排序鏡像到綁定的通用列表? – JC97
如果您有其他問題,請提出一個新問題。請不要在評論欄中提出其他問題。 – mm8