为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 189 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号