WPF列表视图:列重新排序事件?

3

当用户更改顺序时,我需要同步两个ListView的列顺序。但似乎没有列重新排序事件。

目前我只是将AllowsColumnReorder设置为“False”,但这不是永久解决方案。在搜索网络时,我发现很多人都有同样的问题,但没有解决方案。该怎么办?

1个回答

12

我不确定它是否有效,但您可能可以利用GridView.Columns是一个ObservableCollection的事实:您可以订阅CollectionChanged事件,并处理Action = Move的情况。

GridView gridView = (GridView)listView.View;
gridView.Columns.CollectionChanged += gridView_CollectionChanged;

private void gridView_CollectionChanged(object sender, CollectionChangedEventArgs e)
{
    if (e.Action == NotifyCollectionChangedAction.Move)
    {
        string msg = string.Format("Column moved from position {0} to position {1}", e.OldIndex, e.NewIndex);
        MessageBox.Show(msg);
    }
}

4
到目前为止运行良好。语法有些变化。使用NotifyCollectionChangedEventArgs,e.OldStartingIndex和e.NewStartingIndex。 - TalkingCode
@TalkingCode 谢谢!这次更改是为了在.NET4中使用这段代码。 - Scott Solmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接