我有一個 WPF 頁面,其中有幾個ListViews. 我想在單擊時對列表進行排序headers,這沒有問題,但現(xiàn)在我為每個 ListView 創(chuàng)建一個單獨的函數(shù),我想創(chuàng)建一個通用函數(shù)。假設(shè)我想替換它:contexte.ListeDesAssemblagesView.SortDescriptions.Clear();contexte.ListeDesAssemblagesView.SortDescriptions.Add(monsort);通過類似的東西:sender.ItemsSource.SortDescriptions.Clear();sender.ItemsSource.SortDescriptions.Add(monsort);編輯:這是由于 mm8 而修改的我的函數(shù)代碼。void GridViewColumnHeaderClickedHandler(object sender, RoutedEventArgs e){ GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader; ListSortDirection direction; ListView listView = sender as ListView; ICollectionView view = CollectionViewSource.GetDefaultView(listView.ItemsSource); string header = ""; if (headerClicked.Column.DisplayMemberBinding != null) { header = ((System.Windows.Data.Binding)headerClicked.Column.DisplayMemberBinding).Path.Path; } else { try { DataTemplate cellTemplate = headerClicked.Column.CellTemplate; Grid grid = cellTemplate.LoadContent() as Grid; TextBlock textBlock = grid.Children.OfType<TextBlock>().FirstOrDefault(); header = BindingOperations.GetBinding(textBlock, TextBlock.TextProperty).Path.Path; } catch { } } string lastHeaderName = view.SortDescriptions[0].PropertyName; string lastDirection = view.SortDescriptions[0].Direction.ToString(); if (headerClicked != null) { if (headerClicked.Role != GridViewColumnHeaderRole.Padding) { if (header != lastHeaderName) { direction = ListSortDirection.Ascending; } else { if (lastDirection == "Ascending") { direction = ListSortDirection.Descending; } else { direction = ListSortDirection.Ascending; } }
1 回答

慕森王
TA貢獻1777條經(jīng)驗 獲得超3個贊
如果您將事件處理程序連接到ListViews您的 XAML 標記中,如下所示:
<ListView GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">
...你可以簡單地提出sender論點:
void GridViewColumnHeaderClickedHandler(object sender, RoutedEventArgs e)
{
ListView listView = sender as ListView;
ICollectionView view = CollectionViewSource.GetDefaultView(listView.ItemsSource);
//...
}
- 1 回答
- 0 關(guān)注
- 181 瀏覽
添加回答
舉報
0/150
提交
取消