[英]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);
}
}
}
您可以通过在父GridViewHeaderRowPresenter
的Columns
集合中获取列的索引来获取列的从零开始的显示索引:
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.