private static void RefreshFixedHeaderFooter( DataGridControl dataGrid, Panel targetPanel, ObservableCollection<DataTemplate> collection ) { TableViewScrollViewer tableViewScrollViewer = dataGrid.ScrollViewer as TableViewScrollViewer; RowSelectorPane rowSelectorPane = ( tableViewScrollViewer != null ) ? tableViewScrollViewer.RowSelectorPane : null; foreach( HeaderFooterItem element in targetPanel.Children ) { if( rowSelectorPane != null ) { rowSelectorPane.FreeRowSelector( element ); } dataGrid.ClearItemContainer( element, GetFixedItem( element ) ); DataGridControl.SetDataGridContext( element, null ); } targetPanel.Children.Clear(); DataGridContext dataGridContext = dataGrid.DataGridContext; foreach( DataTemplate template in collection ) { HeaderFooterItem control = new HeaderFooterItem(); control.Content = dataGrid.DataContext; control.ContentTemplate = template; DataGridControl.SetDataGridContext( control, dataGridContext ); dataGrid.PrepareItemContainer( control, template ); DataGridControl.SetFixedItem( control, template ); GroupLevelIndicatorPane.SetGroupLevel( control, -1 ); targetPanel.Children.Add( control ); } }
private static void ClearFixedHostPanelHelper( DataGridControl dataGrid, UIElementCollection collection ) { TableViewScrollViewer tableViewScrollViewer = dataGrid.ScrollViewer as TableViewScrollViewer; RowSelectorPane rowSelectorPane = ( tableViewScrollViewer != null ) ? tableViewScrollViewer.RowSelectorPane : null; foreach( DependencyObject headerFooterItem in collection ) { if( rowSelectorPane != null ) { rowSelectorPane.FreeRowSelector( headerFooterItem ); } dataGrid.ClearItemContainer( headerFooterItem, GetFixedItem( headerFooterItem ) ); DataGridControl.SetDataGridContext( headerFooterItem, null ); } collection.Clear(); }