protected DataGridDetailDescription()
        {
            m_itemProperties              = new DataGridItemPropertyCollection();
            m_detailDescriptions          = new DataGridDetailDescriptionCollection();
            m_defaultPropertyDescriptions = new PropertyDescriptionRouteDictionary();

            m_groupDescriptions = new GroupDescriptionCollection();
            m_sortDescriptions  = new DataGridSortDescriptionCollection();

            this.AutoCreateDetailDescriptions   = true;
            this.AutoCreateItemProperties       = true;
            this.DefaultCalculateDistinctValues = true;

            CollectionChangedEventManager.AddListener(m_itemProperties, this);
            InitializeItemPropertyEventManager.AddListener(m_itemProperties, this);
            CollectionChangedEventManager.AddListener(m_detailDescriptions, this);
        }
        protected DataGridDetailDescription()
        {
            m_detailDescriptions = new DataGridDetailDescriptionCollection();
            m_detailDescriptions.CollectionChanged += this.OnDetailDescriptionsCollectionChanged;

            m_itemProperties = new DataGridItemPropertyCollection();
            m_itemProperties.CollectionChanged += this.OnItemPropertiesCollectionChanged;

            m_groupDescriptions = new GroupDescriptionCollection();
            m_sortDescriptions  = new DataGridSortDescriptionCollection();
            m_statFunctions     = new StatFunctionCollection();
            m_autoFilterValues  = new ReadOnlyDictionary <string, IList>();
            m_autoFilteredItems = new ObservableCollection <DataGridItemPropertyBase>();
            m_registeredFieldNamesToAutoFilterValues = new Dictionary <string, INotifyCollectionChanged>();
            m_registeredAutoFilterValuesToFieldNames = new Dictionary <INotifyCollectionChanged, string>();

            this.AutoCreateDetailDescriptions   = true;
            this.AutoCreateItemProperties       = true;
            this.DefaultCalculateDistinctValues = true;
        }