public override object GetValue(object component) { var outerRowItem = component as RowItem; if (null == outerRowItem) { return(null); } var reportRow = outerRowItem.Value as GroupedRow; if (null == reportRow) { return(null); } IEnumerable <RowItem> innerRows; if (null == OuterPivotKey) { innerRows = reportRow.InnerRows; } else { RowItem innerRow; if (!reportRow.TryGetInnerRow(OuterPivotKey, out innerRow)) { return(null); } innerRows = new[] { innerRow }; } var values = new List <object>(); foreach (var innerRow in innerRows) { var value = DisplayColumn.GetValue(innerRow, InnerPivotKey); if (null != value) { values.Add(value); } } var distinctValues = values.Distinct().ToArray(); if (distinctValues.Length == 0) { return(null); } else if (distinctValues.Length == 1) { return(distinctValues[0]); } else { return(null); } }