【问题标题】:Silverlight 3 DataGrid Grouping - Detecting Group Header Click or Header Expand/CollapseSilverlight 3 DataGrid 分组 - 检测组标题单击或标题展开/折叠
【发布时间】:2010-12-24 04:49:57
【问题描述】:
我在 Silverlight 3 中使用 PagedCollectionView 对数据网格中的项目进行分组。我想检测何时单击组标题,但 6 小时后仍然找不到任何方法。
(这样当点击折叠的标题时,我可以动态加载组的内容)
数据网格是这样填充的:
PagedCollectionView 集合 = new PagedCollectionView(orgMembers);
collection.GroupDescriptions.Add(new PropertyGroupDescription("Generation"));
DataGrid1.ItemsSource = 集合;
【问题讨论】:
标签:
collections
silverlight-3.0
datagrid
paging
grouping
【解决方案1】:
编写扩展方法来查找特定类型的父元素:
public static T FindParentOfType<T>(this FrameworkElement element)
{
var parent = VisualTreeHelper.GetParent(element) as FrameworkElement;
while (parent != null)
{
if (parent is T)
return (T)(object)parent;
parent = VisualTreeHelper.GetParent(parent) as FrameworkElement;
}
return default(T);
}
处理数据网格上的 MouseLeftButtonUp 事件:
private void PassportGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
DataGridRowGroupHeader rgh = (e.OriginalSource as FrameworkElement).FindParentOfType<DataGridRowGroupHeader>();
if (rgh != null && rgh.DataContext is CollectionViewGroup)
{
var stuff = (rgh.DataContext as CollectionViewGroup);
var items = stuff.Items;
}
}
您可以获得有关被点击的组及其项目集合的信息(如上所示)