【发布时间】:2010-10-19 15:43:39
【问题描述】:
我正在尝试使用带有可排序列的 GridView 来实现 ListView。 为了对 ListView 进行排序,我连接了 GridViewColumnHeaders 的 Click 事件并将 SortDescriptors 添加到默认视图源(类似于MSDN 中所做的)。
类似这样的:
<ListView ItemsSource="MY ITEMS SOURCE BINDING">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn DisplayMemberBinding="MY DISPLAYMEMBER BINDING">
<GridViewColumnHeader Content="My Header" Click="ColumnHeaderClicked"/>
这一切都很好,但我想概括一下。为此,我简单地派生了 GridViewColumnHeader 并编写了一个点击处理程序。我知道有很多可排序的列表视图实现通常源自 ListView,但我只是想知道这种方法是否可行。
类似这样的:
<ListView ItemsSource="MY ITEMS SOURCE BINDING">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn DisplayMemberBinding="MY DISPLAYMEMBER BINDING">
<local:SortableGridViewColumnHeader Content="My Header"/>
为此,我需要从 SortableGridViewColumnHeader 代码导航到包含的 ListView 以设置新的 SortDescriptors。
我尝试向上导航父阶梯,但 GridViewColumnHeader 不是我的 ListView 的可视子级。当然,我可以创建一个依赖属性并将其绑定到 ListView,但必须有一种方法可以导航到它。
我将如何在代码中做到这一点? (我不是在寻找关于如何对 WPF ListViews 进行一般排序的答案,我想知道是否可以这样做)。
编辑
事实证明,我需要的是我的 GridViewColumnHeader 衍生产品的点击处理程序中的这个父搜索器。
DependencyObject parent = this;
do
{
parent = VisualTreeHelper.GetParent(parent);
if (parent == null) return;
} while (!(parent is ListView));
现在我的排序就像一个魅力。
【问题讨论】:
标签: wpf gridview listview jquery-ui-sortable