繁体   English   中英

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

[英]How do I get the GridViewColumn Header index in the GridViewColumnHeader.Click event?

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

但我不想对标题名称进行硬编码。 因此,我想知道如何找到该列的索引。

下面是我在Header click事件处理程序中使用的代码。

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);
        }
    }
}

您可以通过在父GridViewHeaderRowPresenterColumns集合中获取列的索引来获取列的从零开始的显示索引:

private void ListViewLocalSystem_Click(object sender, RoutedEventArgs e)
{
    GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;
    if (headerClicked != null)
    {
        GridViewHeaderRowPresenter presenter = headerClicked.Parent as GridViewHeaderRowPresenter;
        if (presenter != null)
        {
            int zeroBasedDisplayIndex = presenter.Columns.IndexOf(headerClicked.Column);
            ...
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM