private static TreeViewItem GetTreeViewItemFromGroupLevelDescriptionCollection( TreeViewItem rootItem, GroupLevelDescriptionCollection groupLevelDescriptions )
    {
      TreeViewItem returned = null;
      Debug.Assert( rootItem != null );
      Debug.Assert( groupLevelDescriptions != null );

      if( rootItem == null )
        throw new DataGridInternalException( "rootItem is null." );

      foreach( object item in rootItem.Items )
      {
        TreeViewItem child = rootItem.ItemContainerGenerator.ContainerFromItem( item ) as TreeViewItem;

        // It may not be visible
        if( child == null )
          continue;

        DetailConfiguration detailConfiguration = child.Header as DetailConfiguration;

        if( detailConfiguration == null )
          throw new DataGridInternalException( "The item's DataContext must be a DetailConfiguration except for the top-most HierarchicalGroupByControl, which contains a DataGridContext." );

        if( groupLevelDescriptions == detailConfiguration.GroupLevelDescriptions )
        {
          returned = child;
          break;
        }

        returned = HierarchicalGroupByControl.GetTreeViewItemFromGroupLevelDescriptionCollection( child, groupLevelDescriptions );

        if( returned != null )
          break;
      }

      return returned;
    }
Ejemplo n.º 2
0
 internal void SetGroupLevelDescriptions( GroupLevelDescriptionCollection value )
 {
   this.SetValue( DetailConfiguration.GroupLevelDescriptionsPropertyKey, value );
 }
    private static bool IsGroupLevelDescriptionsInDetailConfigurations( DetailConfigurationCollection configurations, GroupLevelDescriptionCollection groupLevelDescriptions )
    {
      bool returnValue = false;

      int detailConfigurationCount = configurations.Count;

      for( int i = 0; i < detailConfigurationCount; i++ )
      {
        DetailConfiguration detailConfiguration = configurations[ i ];

        if( detailConfiguration.DetailConfigurations != null )
          returnValue = GroupingHelper.IsGroupLevelDescriptionsInDetailConfigurations( detailConfiguration.DetailConfigurations, groupLevelDescriptions );

        if( returnValue )
          break;

        returnValue = ( detailConfiguration.GroupLevelDescriptions == groupLevelDescriptions );

        if( returnValue )
          break;
      }

      return returnValue;
    }