亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WPF GridViewColumnHeader.Click - 獲取 ItemsSource

WPF GridViewColumnHeader.Click - 獲取 ItemsSource

C#
Smart貓小萌 2022-11-21 20:10:39
我有一個 WPF 頁面,其中有幾個ListViews. 我想在單擊時對列表進行排序headers,這沒有問題,但現在我為每個 ListView 創建一個單獨的函數,我想創建一個通用函數。假設我想替換它:contexte.ListeDesAssemblagesView.SortDescriptions.Clear();contexte.ListeDesAssemblagesView.SortDescriptions.Add(monsort);通過類似的東西:sender.ItemsSource.SortDescriptions.Clear();sender.ItemsSource.SortDescriptions.Add(monsort);編輯:這是由于 mm8 而修改的我的函數代碼。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條經驗 獲得超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);

    //...

}


查看完整回答
反對 回復 2022-11-21
  • 1 回答
  • 0 關注
  • 184 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號