如何在GridViewColumnHeader.Click事件中获取GridViewColumn标头索引?

时间:2017-11-09 09:37:17

标签: c# wpf gridview

我在我的应用程序中添加了一个GridView控件。现在,我想找到用户点击的列标题的索引。因为我想检查列是否有索引0,如果是这种情况,那么我将从gridview中删除分组,在其他情况下,我将根据列代码将分组添加到gridview中。目前我正在识别带有标题的列。

但我不想硬编码标题名称。所以,我想知道如何找到列的索引。

以下是我在Header点击事件处理程序中使用的代码。

private void ListViewLocalSystem_Click(object sender, RoutedEventArgs e)
{
    GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;
    if (headerClicked != null)
    {
        if (headerClicked.Column.Header.ToString() == "Name")
        {
            CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(ListViewLocalSystem.ItemsSource);
            if (view.GroupDescriptions != null)
            {
                view.GroupDescriptions.Clear();
            }
        }
        else if (headerClicked.Column.DisplayMemberBinding is Binding)
        {
            string bindingProperty = ((Binding)(headerClicked.Column.DisplayMemberBinding)).Path.Path;
            CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(ListViewLocalSystem.ItemsSource);
            PropertyGroupDescription groupDescription = new PropertyGroupDescription(bindingProperty);
            if (view.GroupDescriptions != null)
            {
                view.GroupDescriptions.Clear();
            }
            view.GroupDescriptions.Add(groupDescription);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以通过在父Columns的{​​{1}}集合中获取该列的索引来获取该列的从零开始的显示索引:

GridViewHeaderRowPresenter