Silverlight 3 DataGrid Grouping - Обнаружение щелчка или заголовка группы Развернуть / Свернуть - PullRequest
2 голосов
/ 08 декабря 2009

Я использую PagedCollectionView в Silverlight 3 для группировки элементов в сетке данных. Я хочу определить, когда щелкают заголовки группы, но через 6 часов все еще не может найти способ сделать это.

(чтобы при щелчке свернутого заголовка я мог динамически загружать содержимое группы)

Сетка данных заполняется так:

PagedCollectionView collection = new PagedCollectionView (orgMembers); collection.GroupDescription.Add (new PropertyGroupDescription ("Поколение"));

DataGrid1.ItemsSource = collection;

1 Ответ

4 голосов
/ 12 января 2010

написать метод расширения, чтобы найти родительский элемент определенного типа:

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

вы можете получить информацию о группе, по которой щелкнули, и о коллекции элементов (показано выше)

...