2009-12-07 77 views
2

我在Silverlight 3中使用PagedCollectionView对数据网格中的项目进行分组。我想检测何时单击组标题,但6小时后仍然无法找到任何方法来执行此操作。Silverlight 3 DataGrid分组 - 检测组标题单击或标题展开/折叠

(因此,当一个折叠头被点击我可以动态加载该组的内容)

数据网格被填充像这样:

PagedCollectionView集合=新PagedCollectionView(orgMembers); collection.GroupDescriptions.Add(new PropertyGroupDescription(“Generation”));

DataGrid1.ItemsSource = collection;

回答

4

编写扩展方法来找到特定类型的父元素:

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

手柄上DataGrid中的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; 
     } 
    } 

您可以单击的群体获取信息及其物品收集(如上所示)