/// <summary> /// Constructor. It will create the <see cref="MultiColumnCollectionHeader"/> to use for the view. /// </summary> /// <param name="columns">The columns data used to initialize the header.</param> /// <param name="sortDescriptions">The sort data used to initialize the header.</param> /// <param name="sortedColumns">The sorted columns for the view.</param> /// <remarks>The header will be added to the view in the <see cref="PrepareView"/> phase.</remarks> public MultiColumnController(Columns columns, SortColumnDescriptions sortDescriptions, List <SortColumnDescription> sortedColumns) { m_MultiColumnHeader = new MultiColumnCollectionHeader(columns, sortDescriptions, sortedColumns) { viewDataKey = k_HeaderViewDataKey }; m_MultiColumnHeader.columnSortingChanged += OnColumnSortingChanged; m_MultiColumnHeader.contextMenuPopulateEvent += OnContextMenuPopulateEvent; m_MultiColumnHeader.columnResized += OnColumnResized; m_MultiColumnHeader.columns.columnAdded += OnColumnAdded; m_MultiColumnHeader.columns.columnRemoved += OnColumnRemoved; m_MultiColumnHeader.columns.columnReordered += OnColumnReordered; m_MultiColumnHeader.columns.columnChanged += OnColumnsChanged; m_MultiColumnHeader.columns.changed += OnColumnChanged; }
/// <summary> /// Unregisters events and removes the header from the hierarchy. /// </summary> public void Dispose() { if (m_View != null) { m_View.scrollView.horizontalScroller.valueChanged -= OnHorizontalScrollerValueChanged; m_View.scrollView.contentViewport.UnregisterCallback <GeometryChangedEvent>(OnViewportGeometryChanged); m_View = null; } m_MultiColumnHeader.columnContainer.UnregisterCallback <GeometryChangedEvent>(OnColumnContainerGeometryChanged); m_MultiColumnHeader.columnSortingChanged -= OnColumnSortingChanged; m_MultiColumnHeader.contextMenuPopulateEvent -= OnContextMenuPopulateEvent; m_MultiColumnHeader.columnResized -= OnColumnResized; m_MultiColumnHeader.columns.columnAdded -= OnColumnAdded; m_MultiColumnHeader.columns.columnRemoved -= OnColumnRemoved; m_MultiColumnHeader.columns.columnReordered -= OnColumnReordered; m_MultiColumnHeader.columns.columnChanged -= OnColumnsChanged; m_MultiColumnHeader.columns.changed -= OnColumnChanged; m_MultiColumnHeader.RemoveFromHierarchy(); m_MultiColumnHeader.Dispose(); m_MultiColumnHeader = null; }