// Called after attaching ColumnVirtualizationManager to DataGridContext
 protected virtual void Initialize()
 {
     m_dataGridContext.PropertyChanged += new PropertyChangedEventHandler(this.DataGridContext_PropertyChanged);
     ItemsSourceChangeCompletedEventManager.AddListener(m_dataGridContext.DataGridControl, this);
     ViewChangedEventManager.AddListener(m_dataGridContext.DataGridControl, this);
     ThemeChangedEventManager.AddListener(m_dataGridContext.DataGridControl, this);
     VisibleColumnsUpdatedEventManager.AddListener(m_dataGridContext.Columns, this);
 }
        // Called before detaching ColumnVirtualizationManager from DataGridContext
        protected virtual void Uninitialize()
        {
            this.ResetInternalState();

            m_dataGridContext.PropertyChanged -= new PropertyChangedEventHandler(this.DataGridContext_PropertyChanged);
            ItemsSourceChangeCompletedEventManager.RemoveListener(m_dataGridContext.DataGridControl, this);
            ViewChangedEventManager.RemoveListener(m_dataGridContext.DataGridControl, this);
            ThemeChangedEventManager.RemoveListener(m_dataGridContext.DataGridControl, this);
            VisibleColumnsUpdatedEventManager.RemoveListener(m_dataGridContext.Columns, this);

            m_dataGridContext = null;
        }