protected override FrameworkElement CreateChild(object item) { BandGridColumnHeader child = new BandGridColumnHeader() { IsTabStop = false, CanSyncWidth = false, DataContext = null }; GridViewHitInfoBase.SetHitTestAcceptor(child, new ColumnHeaderTableViewHitTestAcceptor()); ColumnBase column = ((GridColumnData)item).Column; BandBehavior.UpdateColumnHeaderTemplate(column); BandedViewBehavior.SetColumnsLayoutControl(column, this); BandedViewBehavior.UpdateColumnPosition(BandBehavior, column); PrepareChild(child, column); return child; }
void PrepareChild(BandGridColumnHeader child, ColumnBase column) { int columnCorrectingCoef = BandedViewBehavior.GetIsLeftColumn(column) ? 0 : 1; int columnSpanCorrectingCoef = BandedViewBehavior.GetIsLeftColumn(column) ? 1 : 0; StdGrid.SetRow(child, BandedViewBehavior.GetRow(column)); StdGrid.SetColumn(child, BandedViewBehavior.GetColumn(column) + columnCorrectingCoef); StdGrid.SetRowSpan(child, BandedViewBehavior.GetRowSpan(column)); StdGrid.SetColumnSpan(child, BandedViewBehavior.GetColumnSpan(column) + columnSpanCorrectingCoef); }